Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into bump-up-version-p…
Browse files Browse the repository at this point in the history
…rometheus-grafana
  • Loading branch information
qiancai committed Jul 18, 2024
2 parents c37d353 + 2754c39 commit 6a4c090
Show file tree
Hide file tree
Showing 107 changed files with 4,089 additions and 680 deletions.
3 changes: 1 addition & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,17 @@ By default, **CHOOSE MASTER ONLY** so your changes will be applied to the next T
For details, see [tips for choosing the affected versions (in Chinese)](https://github.com/pingcap/docs-cn/blob/master/CONTRIBUTING.md#版本选择指南).

- [ ] master (the latest development version)
- [ ] v8.3 (TiDB 8.3 versions)
- [ ] v8.2 (TiDB 8.2 versions)
- [ ] v8.1 (TiDB 8.1 versions)
- [ ] v8.0 (TiDB 8.0 versions)
- [ ] v7.6 (TiDB 7.6 versions)
- [ ] v7.5 (TiDB 7.5 versions)
- [ ] v7.1 (TiDB 7.1 versions)
- [ ] v6.5 (TiDB 6.5 versions)
- [ ] v6.1 (TiDB 6.1 versions)
- [ ] v5.4 (TiDB 5.4 versions)
- [ ] v5.3 (TiDB 5.3 versions)
- [ ] v5.2 (TiDB 5.2 versions)
- [ ] v5.1 (TiDB 5.1 versions)

### What is the related PR or file link(s)?

Expand Down
27 changes: 22 additions & 5 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
- [文档中心](https://docs.pingcap.com/zh)
- 关于 TiDB
- [TiDB 简介](/overview.md)
- [TiDB 8.1 Release Notes](/releases/release-8.1.0.md)
- [TiDB 8.2 Release Notes](/releases/release-8.2.0.md)
- [功能概览](/basic-features.md)
- [与 MySQL 的兼容性](/mysql-compatibility.md)
- [使用限制](/tidb-limitations.md)
Expand Down Expand Up @@ -111,6 +111,7 @@
- 规划集群拓扑
- [最小部署拓扑结构](/minimal-deployment-topology.md)
- [TiFlash 部署拓扑](/tiflash-deployment-topology.md)
- [PD 微服务部署拓扑](/pd-microservices-deployment-topology.md)
- [TiProxy 部署拓扑](/tiproxy/tiproxy-deployment-topology.md)
- [TiCDC 部署拓扑](/ticdc-deployment-topology.md)
- [TiDB Binlog 部署拓扑](/tidb-binlog-deployment-topology.md)
Expand Down Expand Up @@ -322,7 +323,13 @@
- [Load Base Split 使用文档](/configure-load-base-split.md)
- [Store Limit 使用文档](/configure-store-limit.md)
- [DDL 执行原理及最佳实践](/ddl-introduction.md)
- [PD 微服务使用文档](/pd-microservices.md)
- PD 微服务使用文档
- [PD 微服务概览](/pd-microservices.md)
- [使用 TiUP 扩容缩容 PD 微服务节点](/scale-microservices-using-tiup.md)
- [TSO 配置文件描述](/tso-configuration-file.md)
- [TSO 配置参数](/command-line-flags-for-tso-configuration.md)
- [Scheduling 配置文件描述](/scheduling-configuration-file.md)
- [Scheduling 配置参数](/command-line-flags-for-scheduling-configuration.md)
- TiDB 工具
- [功能概览](/ecosystem-tool-user-guide.md)
- [使用场景](/ecosystem-tool-user-case.md)
Expand Down Expand Up @@ -856,7 +863,7 @@
- [`SHOW PLACEMENT LABELS`](/sql-statements/sql-statement-show-placement-labels.md)
- [`SHOW PLUGINS`](/sql-statements/sql-statement-show-plugins.md)
- [`SHOW PRIVILEGES`](/sql-statements/sql-statement-show-privileges.md)
- [`SHOW PROCESSSLIST`](/sql-statements/sql-statement-show-processlist.md)
- [`SHOW PROCESSLIST`](/sql-statements/sql-statement-show-processlist.md)
- [`SHOW PROFILES`](/sql-statements/sql-statement-show-profiles.md)
- [`SHOW PUMP STATUS`](/sql-statements/sql-statement-show-pump-status.md)
- [`SHOW SCHEMAS`](/sql-statements/sql-statement-show-schemas.md)
Expand Down Expand Up @@ -901,7 +908,15 @@
- [加密和压缩函数](/functions-and-operators/encryption-and-compression-functions.md)
- [锁函数](/functions-and-operators/locking-functions.md)
- [信息函数](/functions-and-operators/information-functions.md)
- [JSON 函数](/functions-and-operators/json-functions.md)
- JSON 函数
- [概览](/functions-and-operators/json-functions.md)
- [创建 JSON 的函数](/functions-and-operators/json-functions/json-functions-create.md)
- [搜索 JSON 的函数](/functions-and-operators/json-functions/json-functions-search.md)
- [修改 JSON 的函数](/functions-and-operators/json-functions/json-functions-modify.md)
- [返回 JSON 的函数](/functions-and-operators/json-functions/json-functions-return.md)
- [JSON 效用函数](/functions-and-operators/json-functions/json-functions-utility.md)
- [聚合 JSON 的函数](/functions-and-operators/json-functions/json-functions-aggregate.md)
- [验证 JSON 的函数](/functions-and-operators/json-functions/json-functions-validate.md)
- [GROUP BY 聚合函数](/functions-and-operators/aggregate-group-by-functions.md)
- [GROUP BY 修饰符](/functions-and-operators/group-by-modifier.md)
- [窗口函数](/functions-and-operators/window-functions.md)
Expand All @@ -928,7 +943,7 @@
- [临时表](/temporary-tables.md)
- [缓存表](/cached-tables.md)
- [外键约束](/foreign-key.md)
- 字符集和排序
- 字符集和排序规则
- [概述](/character-set-and-collation.md)
- [GBK](/character-set-gbk.md)
- [Placement Rules in SQL](/placement-rules-in-sql.md)
Expand Down Expand Up @@ -1056,6 +1071,8 @@
- [版本发布时间线](/releases/release-timeline.md)
- [TiDB 版本规则](/releases/versioning.md)
- [TiDB 离线包](/binary-package.md)
- v8.2
- [8.2.0-DMR](/releases/release-8.2.0.md)
- v8.1
- [8.1.0](/releases/release-8.1.0.md)
- v8.0
Expand Down
19 changes: 13 additions & 6 deletions auto-random.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,23 @@ TiDB 自动分配的 `AUTO_RANDOM(S, R)` 列值共有 64 位:
- `S` 表示分片位的数量,取值范围是 `1``15`。默认为 `5`
- `R` 表示自动分配值域的总长度,取值范围是 `32``64`。默认为 `64`

`AUTO_RANDOM` 列值的具体结构如下:
有符号位的 `AUTO_RANDOM` 列值的具体结构如下:

| 总位数 | 符号位 | 保留位 | 分片位 | 自增位 |
|---------|----------|-------------|--------|--------------|
| 64 bits | 0/1 bit | (64-R) bits | S bits | (R-1-S) bits |
| 符号位 | 保留位 | 分片位 | 自增位 |
|--------|-------------|--------|--------------|
| 1 bit | `64-R` bits | `S` bits | `R-1-S` bits |

- 符号位的长度由该列是否存在 `UNSIGNED` 属性决定:存在则为 `0`,否则为 `1`
无符号位的 `AUTO_RANDOM` 列值的具体结构如下:

| 保留位 | 分片位 | 自增位 |
|-------------|--------|------------|
| `64-R` bits | `S` bits | `R-S` bits |

- 是否有符号位取决于该列是否存在 `UNSIGNED` 属性。
- 保留位的长度为 `64-R`,保留位的内容始终为 `0`
- 分片位的内容通过计算当前事务的开始时间的哈希值而得。要使用不同的分片位数量(例如 10),可以在建表时指定 `AUTO_RANDOM(10)`
- 自增位的值保存在存储引擎中,按顺序分配,每次分配完值后会自增 1。自增位保证了 `AUTO_RANDOM` 列值全局唯一。当自增位耗尽后,再次自动分配时会报 `Failed to read auto-increment value from storage engine` 的错误。
- 关于取值范围:最终生成值包含的最大位数 = 分片位 + 自增位。有符号位的列的取值范围是 `[-(2^(R-1))+1, (2^(R-1))-1]`。无符号位的列的取值范围是 `[0, (2^R)-1]`

> **注意:**
>
Expand All @@ -100,7 +107,7 @@ TiDB 自动分配的 `AUTO_RANDOM(S, R)` 列值共有 64 位:
> 值域长度 (`R`) 的选取:
>
> - 通常,在应用程序的数值类型无法表示完整的 64 位整数时需要设置 `R` 参数。
> - 例如:JSON number 类型的取值范围为 `[-(2^53)+1, (2^53)-1]`,而 TiDB 很容易会为 `AUTO_RANDOM(5)` 的列分配超出该范围的整数,导致应用程序读取该列的值时出现异常。此时,你可以用 `AUTO_RANDOM(5, 54)` 代替 `AUTO_RANDOM(5)`使得 TiDB 不会分配出大于 `9007199254740991` (2^53-1) 的整数。
> - 例如:JSON number 类型的取值范围为 `[-(2^53)+1, (2^53)-1]`,而 TiDB 很容易会为 `AUTO_RANDOM(5)` 的列分配超出该范围的整数,导致应用程序读取该列的值时出现异常。此时,对于有符号的列你可以用 `AUTO_RANDOM(5, 54)` 代替 `AUTO_RANDOM(5)`无符号列可以用 `AUTO_RANDOM(5, 53)` 代替 `AUTO_RANDOM(5)`,这样使得 TiDB 不会分配出大于 `9007199254740991` (2^53-1) 的整数。
`AUTO RANDOM` 列隐式分配的值会影响 `last_insert_id()`。可以使用 `SELECT last_insert_id()` 获取上一次 TiDB 隐式分配的 ID。

Expand Down
Loading

0 comments on commit 6a4c090

Please sign in to comment.