@@ -3,7 +3,8 @@ title: DISTRIBUTE TABLE
3
3
summary : 介绍 TiDB 数据库中 DISTRIBUTE TABLE 的使用概况。
4
4
---
5
5
6
- # DISTRIBUTE TABLE 使用文档
6
+ # DISTRIBUTE TABLE
7
+
7
8
` DISTRIBUTE TABLE ` 语句用于对指定表的 Region 进行重新打散和调度,以实现表维度的均衡分布。执行该语句可以防止个别 Region 集中在少数 TiFlash 或 TiKV 节点上,从而解决表中 Region 分布不均衡的问题。
8
9
9
10
## 语法图
@@ -23,53 +24,64 @@ EngineOption ::=
23
24
24
25
RoleOption ::=
25
26
"Role" Expression
26
-
27
27
```
28
28
29
29
## 示例
30
- 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 learner、leader、voter) 进行打散均衡操作。
31
30
32
- 对表 ` t1 ` 在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
31
+ 通过 ` DISTRIBUTE TABLE ` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 Leader、Learner、Voter)进行均衡打散操作。
32
+
33
+ 对表 ` t1 ` 在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
33
34
34
35
``` sql
35
36
CREATE TABLE t1 (a INT );
36
37
...
37
- DISTRIBUTE TABLE table_name engine tikv role leader
38
+ DISTRIBUTE TABLE t1 engine tikv role leader
39
+ ```
40
+
38
41
```
39
42
+---------+
40
- | JOB_ID |
43
+ | JOB_ID |
41
44
100
42
45
+---------+
46
+ ```
47
+
48
+ 对表 ` t2 ` 在 TiFlash 上的 Learner 所在的 Region 重新进行均衡调度:
43
49
44
- 对表 ` t2 ` 在 TiFlash 上的 learner 所在的 Region 重新进行均衡调度:
45
50
``` sql
46
51
CREATE TABLE t2 (a INT );
47
52
...
48
53
DISTRIBUTE TABLE t2 ENGINE tiflash role learner;
54
+ ```
55
+
49
56
```
50
57
+---------+
51
- | JOB_ID |
58
+ | JOB_ID |
52
59
101
53
60
+---------+
61
+ ```
54
62
55
- 对分区表 ` t5 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:
63
+ 对分区表 ` t3 ` 的 ` p1 ` 和 ` p2 ` 分区在 TiKV 上的 Leader 所在的 Region 重新进行均衡调度:
56
64
57
65
``` sql
58
- CREATE TABLE t5 (a INT );
66
+ CREATE TABLE t3 (a INT );
59
67
...
60
- DISTRIBUTE TABLE t5 PARTITION (p1, p2) ENGINE tikv role leader;
68
+ DISTRIBUTE TABLE t3 PARTITION (p1, p2) ENGINE tikv role leader;
69
+ ```
70
+
61
71
```
62
72
+---------+
63
- | JOB_ID |
73
+ | JOB_ID |
64
74
102
65
75
+---------+
76
+ ```
66
77
78
+ 执行 [ ` SHOW DISTRIBUTION JOBS ` ] ( /sql-statements/sql-statement-show-distribution-jobs.md ) 语句查看当前所有的调度任务:
67
79
68
- 显示当前所有的调度任务:
69
80
``` sql
70
81
SHOW DISTRIBUTION JOBS;
71
82
```
72
83
84
+ ```
73
85
+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
74
86
| JOB_ID | DB_NAME | TABLE_NAME | PARTITION_NAMES | ENGINE_TYPE | ROLE_TYPE | STATUS | CREATE_USER | CREATE_TIME |
75
87
+---------+------------+------------+-----------------+------------+-----------+--------+---------------+---------------+
@@ -78,13 +90,15 @@ SHOW DISTRIBUTION JOBS;
78
90
| 3 | db_1 | t3 | | TiKV | VOTER | STOPPED | ADMIN | 20240713 |
79
91
| 4 | db_1 | t4 | | TIFLASH | LEARNER | FINISHED | ADMIN | 20240713 |
80
92
+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
93
+ ```
81
94
95
+ 执行 [ ` SHOW TABLE DISTRIBUTION ` ] ( /sql-statements/sql_statement-show-table-distribution.md ) 语句查看表 ` t1 ` 的 Region 分布情况:
82
96
83
- 显示当前表 ` t1 ` 的 region 分布情况:
84
97
``` sql
85
98
SHOW TABLE DISTRIBUTION t1;
86
99
```
87
100
101
+ ```
88
102
+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
89
103
| DB_NAME | TABLE_NAME | PARTITION_NAME | STORE_ID | STORE_TYPE | REGION_LEADER_NUM | REGION_LEADER_BYTE | REGION_PEER_NUM | REGION_PEER_BYTE |
90
104
+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
@@ -93,13 +107,17 @@ SHOW TABLE DISTRIBUTION t1;
93
107
| db_1 | t1 | | 3 | TiKV | 319 | 25986274812 | 1091 | 89405367423 |
94
108
| db_1 | t1 | | 4 | TiKV | 503 | 41039587625 | 1101 | 90482317797 |
95
109
+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
96
-
110
+ ```
97
111
98
112
## 注意事项
99
113
100
114
` DISTRIBUTE TABLE ` 语句在重新调度表中的 Region 时,可能会受到 PD 热点调度器的影响。调度完成后,随着时间推移,表的 Region 分布可能再次失衡。
101
115
102
116
## MySQL 兼容性
117
+
103
118
该语句是 TiDB 对 MySQL 语法的扩展。
104
119
105
120
## 另请参阅
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