Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ca62ac6
add distribute table fd
bufferflies Jan 13, 2025
a4fc306
address comment
bufferflies Feb 6, 2025
c0b9415
address comment
bufferflies Feb 13, 2025
e80d334
add toc changes and anther two sql docs
qiancai Feb 20, 2025
1bdc893
Apply suggestions from code review
qiancai Feb 20, 2025
2bfb0e1
update the file naming style to use hyphen
qiancai Feb 21, 2025
acd05fa
Apply suggestions from code review
qiancai Mar 17, 2025
92d3a9c
add cancel job sql
bufferflies May 21, 2025
c7611d9
conflict
bufferflies May 21, 2025
20a6312
split
bufferflies May 21, 2025
a4ccf2c
address comment
bufferflies May 29, 2025
1e9b393
cancel distribution job
bufferflies May 30, 2025
51c781b
toc add cancel distribution job link
bufferflies Jun 4, 2025
8f08f70
add a section for parameter descriptions
qiancai Jun 9, 2025
418934e
Update sql-statements/sql-statement-cancel-distribution-job.md
qiancai Jun 19, 2025
17547f5
scatter
bufferflies Jun 19, 2025
e2f16f4
optimize parser
bufferflies Jun 20, 2025
3ce5099
add " " to wrap argument values
qiancai Jun 23, 2025
4e1386f
minor format updates
qiancai Jun 23, 2025
0ae5d5c
----
bufferflies Jun 25, 2025
0881fba
Merge branch 'distribute_table' of github.com:bufferflies/docs-cn int…
bufferflies Jun 25, 2025
f0545be
address comment
bufferflies Jun 27, 2025
7140d09
minor format updates
qiancai Jun 27, 2025
1bfac73
show distribution
bufferflies Jun 30, 2025
4bffb4e
Merge branch 'distribute_table' of github.com:bufferflies/docs-cn int…
bufferflies Jun 30, 2025
745d235
remove an empty line
qiancai Jun 30, 2025
4bcab8e
remove an empty line
qiancai Jun 30, 2025
5673ec1
add four comments about the support info
qiancai Jul 21, 2025
f5e6ffa
Apply suggestions from code review
qiancai Jul 24, 2025
9bae0eb
use <span> to wrap the version support info
qiancai Aug 12, 2025
97fc420
Merge branch 'distribute_table' of https://github.com/bufferflies/doc…
qiancai Aug 12, 2025
a27f6cd
show the version span in the doc title
qiancai Aug 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions sql-statements/sql_statement_distribute_table.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
title: distribute table 使用文档
aliases: ['/docs-cn/dev/sql-statements/sql-statement-distribute-table/','/docs-cn/dev/reference/sql/statements/distribute-table/']
Copy link
Collaborator

@qiancai qiancai Jan 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

新增文档不需要 aliases

Suggested change
aliases: ['/docs-cn/dev/sql-statements/sql-statement-distribute-table/','/docs-cn/dev/reference/sql/statements/distribute-table/']

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

summary: TiDB 中的 distribute table 功能可以解决表中 region 分布不均衡问题。通过重新调整 table 中的 region 的分布,可以让指定 table 下的 region 按照一定的策略进行均衡。重新分配可以指定不同的存储引擎,比如 TIFLASH 和 TIKV。同时也可以指定不同的 raft role,比如 learner,leader,voter。
---

# Distribute Table 使用文档
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Distribute Table 使用文档
# DISTRIBUTE TABLE

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## 语法图

```ebnf+diagram
DistributeTableStmt ::=
"DISTRIBUTE" "TABLE" TableName PartitionNameList? EngineOption? RoleOption?

TableName ::=
(SchemaName ".")? Identifier

PartitionNameList ::=
"PARTITION" "(" PartitionName ("," PartitionName)* ")"

EngineOption ::=
"ENGINE" Expression

RoleOption ::=
"Role" Expression

```

## 示例

对表A 上的 tikv 上的 leader 重新进行均衡调度
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
对表A 上的 tikv 上的 leader 重新进行均衡调度
通过 `DISTRIBUTE TABLE` 语句重新调度表中的 Region 时,你可以根据需求指定存储引擎(如 TiFlash 或 TiKV)以及不同的 Raft 角色(如 learner、leader、voter)。
对表 `t1` 在 TiKV 上的 leader 所在的 Region 重新进行均衡调度:

```sql
CREATE TABLE t1 (a INT);
...
DISTRIBUTE TABLE table_name engine tikv role leader
```
+---------+
| JOB_ID |
100
+---------+



显示当前所有的调度任务
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
显示当前所有的调度任务
显示当前所有的调度任务

```sql
SHOW DISTRIBUTION JOBS;
```

+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+
| JOB_ID | DB_NAME | TABLE_NAME | PARTITION_NAMES | ENGINE_TYPE | ROLE_TYPE | STATUS | CREATE_USER | CREATE_TIME |
+---------+------------+------------+-----------------+------------+-----------+--------+---------------+---------------+
| 1 | db_1 | t1 | | TIKV | LEADER | RUNNING | ADMIN | 20240712 |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| 1 | db_1 | t1 | | TIKV | LEADER | RUNNING | ADMIN | 20240712 |
| 1 | db_1 | t1 | | TIKV | LEADER | RUNNING | ADMIN | 20240712 |

| 2 | db_1 | t2 | | TIFLASH | LEARNER | FINISHED | ADMIN | 20240715 |
| 3 | db_1 | t3 | | TiKV | VOTER | STOPPED | ADMIN | 20240713 |
| 4 | db_1 | t4 | | TIFLASH | LEARNER | FINISHED | ADMIN | 20240713 |
+---------+------------+------------+-----------------+------------+-----------+----------+-------------+---------------+


显示当前表 t1 的 region 分布情况
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
显示当前表 t1 的 region 分布情况
显示表 `t1` 当前的 Region 分布情况

```sql
SHOW TABLE DISTRIBUTION t1;
```

+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
| DB_NAME | TABLE_NAME | PARTITION_NAME | STORE_ID | STORE_TYPE | REGION_LEADER_NUM | REGION_LEADER_BYTE | REGION_PEER_NUM | REGION_PEER_BYTE |
+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+
| db_1 | t1 | | 1 | TiKV | 315 | 24057934521 | 1087 | 86938746542 |
| db_1 | t1 | | 2 | TiKV | 324 | 28204839240 | 1104 | 91039476832 |
| db_1 | t1 | | 3 | TiKV | 319 | 25986274812 | 1091 | 89405367423 |
| db_1 | t1 | | 4 | TiKV | 503 | 41039587625 | 1101 | 90482317797 |
+---------+------------+----------------+----------+------------+-------------------+--------------------+-----------------+------------------+

### Distribute Table Region

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“### Distribute Table Region” 里面目前没有内容,请看看是需要删除还是添加

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

删除了


## 注意事项

Distribute Table 语句重新调度 table 下的 region 也会受到 PD 中热点调度器的影响。 同时该任务会在均衡后退出,退出后该表的分布可能会
被被破坏。
Copy link
Collaborator

@qiancai qiancai Feb 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Distribute Table 语句重新调度 table 下的 region 也会受到 PD 中热点调度器的影响。 同时该任务会在均衡后退出,退出后该表的分布可能会
被被破坏。
`DISTRIBUTE TABLE` 语句在重新调度表中的 Region 时,可能会受到 PD 热点调度器的影响。调度完成后,随着时间推移,表的 Region 分布可能再次失衡。


## MySQL 兼容性
该语句是 TiDB 对 MySQL 语法的扩展。

## 另请参阅
Loading