@@ -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## 语法图
@@ -27,49 +28,61 @@ RoleOption ::=
2728```
2829
2930## 示例
30- 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 learner、leader、voter) 进行打散均衡操作。
3131
32- 对表 ` t1 ` 在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
32+ 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 Leader、Learner、Voter)进行均衡打散操作。
33+
34+ 对表 ` t1 ` 在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
3335
3436``` sql
3537CREATE TABLE t1 (a INT );
3638...
37- DISTRIBUTE TABLE table_name engine tikv role leader
39+ DISTRIBUTE TABLE t1 engine tikv role leader
40+ ```
41+
3842```
3943+---------+
40- | JOB_ID |
44+ | JOB_ID |
4145100
4246+---------+
47+ ```
48+
49+ 对表 ` t2 ` 在 TiFlash 上的 Learner 所在的 Region 重新进行均衡调度:
4350
44- 对表 ` t2 ` 在 TiFlash 上的 learner 所在的 Region 重新进行均衡调度:
4551``` sql
4652CREATE TABLE t2 (a INT );
4753...
4854DISTRIBUTE TABLE t2 ENGINE tiflash role learner;
55+ ```
56+
4957```
5058+---------+
51- | JOB_ID |
59+ | JOB_ID |
5260101
5361+---------+
62+ ```
5463
55- 对分区表 ` t5 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
64+ 对分区表 ` t3 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
5665
5766``` sql
58- CREATE TABLE t5 (a INT );
67+ CREATE TABLE t3 (a INT );
5968...
60- DISTRIBUTE TABLE t5 PARTITION (p1, p2) ENGINE tikv role leader;
69+ DISTRIBUTE TABLE t3 PARTITION (p1, p2) ENGINE tikv role leader;
70+ ```
71+
6172```
6273+---------+
63- | JOB_ID |
74+ | JOB_ID |
6475102
6576+---------+
77+ ```
6678
79+ 执行 [ ` SHOW DISTRIBUTION JOBS ` ] ( /sql-statements/sql-statement-show-distribution-jobs.md ) 语句查看当前所有的调度任务:
6780
68- 显示当前所有的调度任务:
6981``` sql
7082SHOW DISTRIBUTION JOBS;
7183```
7284
85+ ```
7386+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
7487| JOB_ID | DB_NAME | TABLE_NAME | PARTITION_NAMES | ENGINE_TYPE | ROLE_TYPE | STATUS | CREATE_USER | CREATE_TIME |
7588+---------+------------+------------+-----------------+------------+-----------+--------+---------------+---------------+
@@ -79,12 +92,15 @@ SHOW DISTRIBUTION JOBS;
7992| 4 | db_1 | t4 | | TIFLASH | LEARNER | FINISHED | ADMIN | 20240713 |
8093+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
8194
95+ ```
96+
97+ 执行 [ ` SHOW TABLE DISTRIBUTION ` ] ( /sql-statements/sql_statement-show-table-distribution.md ) 语句查看表 ` t1 ` 的 Region 分布情况:
8298
83- 显示当前表 ` t1 ` 的 region 分布情况:
8499``` sql
85100SHOW TABLE DISTRIBUTION t1;
86101```
87102
103+ ```
88104+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
89105| DB_NAME | TABLE_NAME | PARTITION_NAME | STORE_ID | STORE_TYPE | REGION_LEADER_NUM | REGION_LEADER_BYTE | REGION_PEER_NUM | REGION_PEER_BYTE |
90106+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
@@ -93,13 +109,17 @@ SHOW TABLE DISTRIBUTION t1;
93109| db_1 | t1 | | 3 | TiKV | 319 | 25986274812 | 1091 | 89405367423 |
94110| db_1 | t1 | | 4 | TiKV | 503 | 41039587625 | 1101 | 90482317797 |
95111+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
96-
112+ ```
97113
98114## 注意事项
99115
100116` DISTRIBUTE TABLE ` 语句在重新调度表中的 Region 时,可能会受到 PD 热点调度器的影响。调度完成后,随着时间推移,表的 Region 分布可能再次失衡。
101117
102118## MySQL 兼容性
119+
103120该语句是 TiDB 对 MySQL 语法的扩展。
104121
105122## 另请参阅
123+
124+ - [ ` SHOW TABLE DISTRIBUTION ` ] ( /sql-statements/sql_statement-show-table-distribution.md )
125+ - [ ` SHOW TABLE REGIONS ` ] ( /sql-statements/sql-statement-show-table-regions.md )
0 commit comments