Skip to content

Commit 373c690

Browse files
authored
Update EBNF for admin statements and add checksum details (#17879)
1 parent 403f7ca commit 373c690

9 files changed

+66
-51
lines changed

sql-statements/sql-statement-admin-cancel-ddl.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ summary: TiDB 数据库中 ADMIN CANCEL DDL 的使用概况。
1212
## 语法图
1313

1414
```ebnf+diagram
15-
AdminStmt ::=
16-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
15+
AdminCancelDDLStmt ::=
16+
'ADMIN' 'CANCEL' 'DDL' 'JOBS' NumList
1717
1818
NumList ::=
1919
Int64Num ( ',' Int64Num )*
@@ -23,8 +23,6 @@ NumList ::=
2323

2424
可以通过 `ADMIN CANCEL DDL JOBS` 语句取消当前正在运行的 DDL 作业,并返回对应作业是否取消成功:
2525

26-
{{< copyable "sql" >}}
27-
2826
```sql
2927
ADMIN CANCEL DDL JOBS job_id [, job_id] ...;
3028
```

sql-statements/sql-statement-admin-check-table-index.md

+4-8
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,31 @@ summary: TiDB 数据库中 ADMIN CHECK [TABLE|INDEX] 的使用概况。
2626
## 语法图
2727

2828
```ebnf+diagram
29-
AdminStmt ::=
30-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
29+
AdminCheckStmt ::=
30+
'ADMIN' 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? )
3131
3232
TableNameList ::=
3333
TableName ( ',' TableName )*
34+
35+
HandleRange ::= '(' Int64Num ',' Int64Num ')'
3436
```
3537

3638
## 示例
3739

3840
可以通过 `ADMIN CHECK TABLE` 语句校验 `tbl_name` 表中所有数据和对应索引的一致性:
3941

40-
{{< copyable "sql" >}}
41-
4242
```sql
4343
ADMIN CHECK TABLE tbl_name [, tbl_name] ...;
4444
```
4545

4646
若通过一致性校验,则返回空的查询结果;否则返回数据不一致的错误信息。
4747

48-
{{< copyable "sql" >}}
49-
5048
```sql
5149
ADMIN CHECK INDEX tbl_name idx_name;
5250
```
5351

5452
以上语句用于对 `tbl_name` 表中 `idx_name` 索引对应列数据和索引数据进行一致性校验。若通过校验,则返回空的查询结果;否则返回数据不一致的错误信息。
5553

56-
{{< copyable "sql" >}}
57-
5854
```sql
5955
ADMIN CHECK INDEX tbl_name idx_name (lower_val, upper_val) [, (lower_val, upper_val)] ...;
6056
```

sql-statements/sql-statement-admin-checksum-table.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ summary: TiDB 数据库中 ADMIN CHECKSUM TABLE 的使用概况。
55

66
# ADMIN CHECKSUM TABLE
77

8-
`ADMIN CHECKSUM TABLE` 语句用于计算表中所有行和索引的 CRC64 校验和。在 TiDB Lightning 等程序中,可通过此语句来确保导入操作成功。
8+
`ADMIN CHECKSUM TABLE` 语句用于计算表中所有数据和索引的 CRC64 校验和。
9+
10+
[校验和](/tidb-lightning/tidb-lightning-glossary.md#checksum)是通过表数据和 `table_id` 等属性进行计算得出的。这意味着两张 `table_id` 不同的表即使数据相同,校验和也不相同。
11+
12+
当使用 [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md) 物理模式、[TiDB Data Migration](/dm/dm-overview.md)[`IMPORT INTO`](/sql-statements/sql-statement-import-into.md) 导入完成一张表后,`ADMIN CHECKSUM TABLE <table>` 语句会默认执行以验证数据完整性。
913

1014
## 语法图
1115

1216
```ebnf+diagram
13-
AdminStmt ::=
14-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
17+
AdminChecksumTableStmt ::=
18+
'ADMIN' 'CHECKSUM' 'TABLE' TableNameList
1519
1620
TableNameList ::=
1721
TableName ( ',' TableName )*

sql-statements/sql-statement-admin-pause-ddl.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ summary: TiDB 数据库中 ADMIN PAUSE DDL JOBS 的使用概况。
1818
## 语法图
1919

2020
```ebnf+diagram
21-
AdminStmt ::=
22-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'PAUSE' 'DDL' 'JOBS' NumList | 'RESUME' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
21+
AdminPauseDDLStmt ::=
22+
'ADMIN' 'PAUSE' 'DDL' 'JOBS' NumList
2323
2424
NumList ::=
2525
Int64Num ( ',' Int64Num )*

sql-statements/sql-statement-admin-recover.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ summary: TiDB 数据库中 ADMIN RECOVER INDEX 的使用概况。
1010
## 语法图
1111

1212
```ebnf+diagram
13-
AdminCleanupStmt ::=
13+
AdminRecoverStmt ::=
1414
'ADMIN' 'RECOVER' 'INDEX' TableName IndexName
1515
```
1616

sql-statements/sql-statement-admin-resume-ddl.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ summary: TiDB 数据库中 ADMIN RESUME DDL 的使用概况。
2020
## 语法图
2121

2222
```ebnf+diagram
23-
AdminStmt ::=
24-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'PAUSE' 'DDL' 'JOBS' NumList | 'RESUME' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
23+
AdminResumeDDLStmt ::=
24+
'ADMIN' 'RESUME' 'DDL' 'JOBS' NumList
2525
2626
NumList ::=
2727
Int64Num ( ',' Int64Num )*

sql-statements/sql-statement-admin-show-ddl.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ summary: TiDB 数据库中 ADMIN SHOW DDL [JOBS|JOB QUERIES] 的使用概况。
1010
## 语法图
1111

1212
```ebnf+diagram
13-
AdminStmt ::=
13+
AdminShowDDLStmt ::=
1414
'ADMIN' 'SHOW' 'DDL'
1515
(
1616
'JOBS' Int64Num? WhereClauseOptional

sql-statements/sql-statement-admin.md

+45-29
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,12 @@ summary: TiDB的 `ADMIN` 语句是用于查看TiDB状态和对表数据进行校
2929

3030
## `ADMIN RELOAD` 语句
3131

32-
{{< copyable "sql" >}}
33-
3432
```sql
3533
ADMIN RELOAD expr_pushdown_blacklist;
3634
```
3735

3836
以上语句用于重新加载表达式下推的黑名单。
3937

40-
{{< copyable "sql" >}}
41-
4238
```sql
4339
ADMIN RELOAD opt_rule_blacklist;
4440
```
@@ -47,16 +43,12 @@ ADMIN RELOAD opt_rule_blacklist;
4743

4844
## `ADMIN PLUGIN` 语句
4945

50-
{{< copyable "sql" >}}
51-
5246
```sql
5347
ADMIN PLUGINS ENABLE plugin_name [, plugin_name] ...;
5448
```
5549

5650
以上语句用于启用 `plugin_name` 插件。
5751

58-
{{< copyable "sql" >}}
59-
6052
```sql
6153
ADMIN PLUGINS DISABLE plugin_name [, plugin_name] ...;
6254
```
@@ -65,32 +57,24 @@ ADMIN PLUGINS DISABLE plugin_name [, plugin_name] ...;
6557

6658
## `ADMIN ... BINDINGS` 语句
6759

68-
{{< copyable "sql" >}}
69-
7060
```sql
7161
ADMIN FLUSH bindings;
7262
```
7363

7464
以上语句用于持久化 SQL Plan 绑定的信息。
7565

76-
{{< copyable "sql" >}}
77-
7866
```sql
7967
ADMIN CAPTURE bindings;
8068
```
8169

8270
以上语句可以将出现超过一次的 `select`execution-plan 语句生成 SQL Plan 的绑定。
8371

84-
{{< copyable "sql" >}}
85-
8672
```sql
8773
ADMIN EVOLVE bindings;
8874
```
8975

9076
开启自动绑定功能后,每隔 `bind-info-lease`(默认值为 `3s`)触发一次 SQL Plan 绑定信息的演进。以上语句用于主动触发此演进,SQL Plan 绑定详情可参考:[执行计划管理](/sql-plan-management.md)
9177

92-
{{< copyable "sql" >}}
93-
9478
```sql
9579
ADMIN RELOAD bindings;
9680
```
@@ -99,8 +83,6 @@ ADMIN RELOAD bindings;
9983

10084
## `ADMIN REPAIR TABLE` 语句
10185

102-
{{< copyable "sql" >}}
103-
10486
```sql
10587
ADMIN REPAIR TABLE tbl_name CREATE TABLE STATEMENT;
10688
```
@@ -117,14 +99,10 @@ ADMIN SHOW t NEXT_ROW_ID;
11799

118100
## `ADMIN SHOW SLOW` 语句
119101

120-
{{< copyable "sql" >}}
121-
122102
```sql
123103
ADMIN SHOW SLOW RECENT N;
124104
```
125105

126-
{{< copyable "sql" >}}
127-
128106
```sql
129107
ADMIN SHOW SLOW TOP [INTERNAL | ALL] N;
130108
```
@@ -135,15 +113,57 @@ ADMIN SHOW SLOW TOP [INTERNAL | ALL] N;
135113

136114
```ebnf+diagram
137115
AdminStmt ::=
138-
'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )
116+
'ADMIN' (
117+
'SHOW' (
118+
'DDL' (
119+
'JOBS' Int64Num? WhereClauseOptional
120+
| 'JOB' 'QUERIES' (NumList | AdminStmtLimitOpt)
121+
)?
122+
| TableName 'NEXT_ROW_ID'
123+
| 'SLOW' AdminShowSlow
124+
| 'BDR' 'ROLE'
125+
)
126+
| 'CHECK' (
127+
'TABLE' TableNameList
128+
| 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )?
129+
)
130+
| 'RECOVER' 'INDEX' TableName Identifier
131+
| 'CLEANUP' (
132+
'INDEX' TableName Identifier
133+
| 'TABLE' 'LOCK' TableNameList )
134+
| 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList
135+
| ( 'CANCEL' | 'PAUSE' | 'RESUME' ) 'DDL' 'JOBS' NumList
136+
| 'RELOAD' (
137+
'EXPR_PUSHDOWN_BLACKLIST'
138+
| 'OPT_RULE_BLACKLIST'
139+
| 'BINDINGS'
140+
| 'STATS_EXTENDED'
141+
| 'STATISTICS'
142+
)
143+
| 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList
144+
| 'REPAIR' 'TABLE' TableName CreateTableStmt
145+
| ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS'
146+
| 'FLUSH' ('SESSION' | 'INSTANCE') 'PLAN_CACHE'
147+
| 'SET' 'BDR' 'ROLE' ( 'PRIMARY' | 'SECONDARY' )
148+
| 'UNSET' 'BDR' 'ROLE'
149+
)
150+
151+
NumList ::=
152+
Int64Num ( ',' Int64Num )*
153+
154+
AdminStmtLimitOpt ::=
155+
'LIMIT' LengthNum
156+
| 'LIMIT' LengthNum ',' LengthNum
157+
| 'LIMIT' LengthNum 'OFFSET' LengthNum
158+
159+
TableNameList ::=
160+
TableName ( ',' TableName )*
139161
```
140162

141163
## 使用示例
142164

143165
执行以下命令,可查看正在执行的 DDL 任务中最近 10 条已经完成的 DDL 任务。未指定 `NUM` 时,默认只显示最近 10 条已经执行完的 DDL 任务。
144166

145-
{{< copyable "sql" >}}
146-
147167
```sql
148168
ADMIN SHOW DDL jobs;
149169
```
@@ -168,8 +188,6 @@ ADMIN SHOW DDL jobs;
168188

169189
执行以下命令,可查看正在执行的 DDL 任务中最近 5 条已经执行完的 DDL 任务:
170190

171-
{{< copyable "sql" >}}
172-
173191
```sql
174192
ADMIN SHOW DDL JOBS 5;
175193
```
@@ -205,8 +223,6 @@ ADMIN SHOW t NEXT_ROW_ID;
205223

206224
执行以下命令,可查看 test 数据库中未执行完成的 DDL 任务,包括正在执行中以及最近 5 条已经执行完但是执行失败的 DDL 任务。
207225

208-
{{< copyable "sql" >}}
209-
210226
```sql
211227
ADMIN SHOW DDL JOBS 5 WHERE state != 'synced' AND db_name = 'test';
212228
```

sql-statements/sql-statement-import-into.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ IMPORT INTO t FROM SELECT * FROM src AS OF TIMESTAMP '2024-02-27 11:38:00';
349349

350350
## 另请参阅
351351

352-
* [`SHOW IMPORT JOB(s)`](/sql-statements/sql-statement-show-import-job.md)
352+
* [`ADMIN CHECKSUM TABLE`](/sql-statements/sql-statement-admin-checksum-table.md)
353353
* [`CANCEL IMPORT JOB`](/sql-statements/sql-statement-cancel-import-job.md)
354+
* [`SHOW IMPORT JOB(s)`](/sql-statements/sql-statement-show-import-job.md)
354355
* [TiDB 分布式执行框架](/tidb-distributed-execution-framework.md)

0 commit comments

Comments
 (0)