@@ -3,7 +3,8 @@ title: DISTRIBUTE TABLE
33summary : 介绍 TiDB 数据库中 DISTRIBUTE TABLE 的使用概况。
44---
55
6- # DISTRIBUTE TABLE 使用文档
6+ # DISTRIBUTE TABLE
7+
78` DISTRIBUTE TABLE ` 语句用于对指定表的 Region 进行重新打散和调度,以实现表维度的均衡分布。执行该语句可以防止个别 Region 集中在少数 TiFlash 或 TiKV 节点上,从而解决表中 Region 分布不均衡的问题。
89
910## 语法图
@@ -23,53 +24,64 @@ EngineOption ::=
2324
2425RoleOption ::=
2526 "Role" Expression
26-
2727```
2828
2929## 示例
30- 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 learner、leader、voter) 进行打散均衡操作。
3130
32- 对表 ` t1 ` 在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
31+ 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 Leader、Learner、Voter)进行均衡打散操作。
32+
33+ 对表 ` t1 ` 在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
3334
3435``` sql
3536CREATE TABLE t1 (a INT );
3637...
37- DISTRIBUTE TABLE table_name engine tikv role leader
38+ DISTRIBUTE TABLE t1 engine tikv role leader
39+ ```
40+
3841```
3942+---------+
40- | JOB_ID |
43+ | JOB_ID |
4144100
4245+---------+
46+ ```
47+
48+ 对表 ` t2 ` 在 TiFlash 上的 Learner 所在的 Region 重新进行均衡调度:
4349
44- 对表 ` t2 ` 在 TiFlash 上的 learner 所在的 Region 重新进行均衡调度:
4550``` sql
4651CREATE TABLE t2 (a INT );
4752...
4853DISTRIBUTE TABLE t2 ENGINE tiflash role learner;
54+ ```
55+
4956```
5057+---------+
51- | JOB_ID |
58+ | JOB_ID |
5259101
5360+---------+
61+ ```
5462
55- 对分区表 ` t5 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
63+ 对分区表 ` t3 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
5664
5765``` sql
58- CREATE TABLE t5 (a INT );
66+ CREATE TABLE t3 (a INT );
5967...
60- DISTRIBUTE TABLE t5 PARTITION (p1, p2) ENGINE tikv role leader;
68+ DISTRIBUTE TABLE t3 PARTITION (p1, p2) ENGINE tikv role leader;
69+ ```
70+
6171```
6272+---------+
63- | JOB_ID |
73+ | JOB_ID |
6474102
6575+---------+
76+ ```
6677
78+ 执行 [ ` SHOW DISTRIBUTION JOBS ` ] ( /sql-statements/sql-statement-show-distribution-jobs.md ) 语句查看当前所有的调度任务:
6779
68- 显示当前所有的调度任务:
6980``` sql
7081SHOW DISTRIBUTION JOBS;
7182```
7283
84+ ```
7385+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
7486| JOB_ID | DB_NAME | TABLE_NAME | PARTITION_NAMES | ENGINE_TYPE | ROLE_TYPE | STATUS | CREATE_USER | CREATE_TIME |
7587+---------+------------+------------+-----------------+------------+-----------+--------+---------------+---------------+
@@ -78,13 +90,15 @@ SHOW DISTRIBUTION JOBS;
7890| 3 | db_1 | t3 | | TiKV | VOTER | STOPPED | ADMIN | 20240713 |
7991| 4 | db_1 | t4 | | TIFLASH | LEARNER | FINISHED | ADMIN | 20240713 |
8092+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
93+ ```
8194
95+ 执行 [ ` SHOW TABLE DISTRIBUTION ` ] ( /sql-statements/sql_statement-show-table-distribution.md ) 语句查看表 ` t1 ` 的 Region 分布情况:
8296
83- 显示当前表 ` t1 ` 的 region 分布情况:
8497``` sql
8598SHOW TABLE DISTRIBUTION t1;
8699```
87100
101+ ```
88102+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
89103| DB_NAME | TABLE_NAME | PARTITION_NAME | STORE_ID | STORE_TYPE | REGION_LEADER_NUM | REGION_LEADER_BYTE | REGION_PEER_NUM | REGION_PEER_BYTE |
90104+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
@@ -93,13 +107,17 @@ SHOW TABLE DISTRIBUTION t1;
93107| db_1 | t1 | | 3 | TiKV | 319 | 25986274812 | 1091 | 89405367423 |
94108| db_1 | t1 | | 4 | TiKV | 503 | 41039587625 | 1101 | 90482317797 |
95109+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
96-
110+ ```
97111
98112## 注意事项
99113
100114` DISTRIBUTE TABLE ` 语句在重新调度表中的 Region 时,可能会受到 PD 热点调度器的影响。调度完成后,随着时间推移,表的 Region 分布可能再次失衡。
101115
102116## MySQL 兼容性
117+
103118该语句是 TiDB 对 MySQL 语法的扩展。
104119
105120## 另请参阅
121+
122+ - [ ` SHOW TABLE DISTRIBUTION ` ] ( /sql-statements/sql_statement-show-table-distribution.md )
123+ - [ ` SHOW TABLE REGIONS ` ] ( /sql-statements/sql-statement-show-table-regions.md )
0 commit comments