|
| 1 | +--- |
| 2 | +title: ADMIN ALTER DDL JOBS |
| 3 | +summary: TiDB 数据库中 `ADMIN ALTER DDL JOBS` 的使用概况。 |
| 4 | +--- |
| 5 | + |
| 6 | +# ADMIN ALTER DDL JOBS |
| 7 | + |
| 8 | +`ADMIN ALTER DDL JOBS` 语句用于修改单个正在运行的 DDL 作业的相关参数。例如: |
| 9 | + |
| 10 | +```sql |
| 11 | +ADMIN ALTER DDL JOBS 101 THREAD = 8; |
| 12 | +``` |
| 13 | + |
| 14 | +其中: |
| 15 | + |
| 16 | +- `101`:表示 DDL 作业的 ID,该 ID 可以通过查询 [`ADMIN SHOW DDL JOBS`](/sql-statements/sql-statement-admin-show-ddl.md) 获得。 |
| 17 | +- `THREAD`:表示当前 DDL 作业的并发度,其初始值由系统变量 [`tidb_ddl_reorg_worker_cnt`](/system-variables.md#tidb_ddl_reorg_worker_cnt) 设置。 |
| 18 | + |
| 19 | +目前支持 `ADMIN ALTER DDL JOBS` 的 DDL 作业类型包括:`ADD INDEX`、`MODIFY COLUMN` 和 `REORGANIZE PARTITION`。对于其他 DDL 作业类型,执行 `ADMIN ALTER DDL JOBS` 会报 `unsupported DDL operation` 的错误。 |
| 20 | + |
| 21 | +目前在一条 `ADMIN ALTER DDL JOBS` 中仅支持对单个 DDL 作业的参数进行调整,不支持同时调整多个 ID 对应的参数。 |
| 22 | + |
| 23 | +以下是不同 DDL 作业类型支持的各项参数,及其对应的系统变量: |
| 24 | + |
| 25 | +- `ADD INDEX`: |
| 26 | + - `THREAD`:并发度,初始值由系统变量 `tidb_ddl_reorg_worker_cnt` 设置。 |
| 27 | + - `BATCH_SIZE`:批大小,初始值由系统变量 [`tidb_ddl_reorg_batch_size`](/system-variables.md#tidb_ddl_reorg_batch_size) 设置。 |
| 28 | + - `MAX_WRITE_SPEED`:向每个 TiKV 导入索引记录时的最大带宽限制,初始值由系统变量 [`tidb_ddl_reorg_max_write_speed`](/system-variables.md#tidb_ddl_reorg_max_write_speed-从-v850-版本开始引入) 设置。 |
| 29 | + |
| 30 | + 以上设置,当前仅对关闭 [`tidb_enable_dist_task`](/system-variables.md#tidb_enable_dist_task-从-v710-版本开始引入) 后,提交并运行中的 `ADD INDEX` 的作业生效。 |
| 31 | + |
| 32 | +- `MODIFY COLUMN`: |
| 33 | + - `THREAD`:并发度,初始值由系统变量 `tidb_ddl_reorg_worker_cnt` 设置。 |
| 34 | + - `BATCH_SIZE`:批大小,初始值由系统变量 `tidb_ddl_reorg_batch_size` 设置。 |
| 35 | + |
| 36 | +- `REORGANIZE PARTITION`: |
| 37 | + - `THREAD`:并发度,初始值由系统变量 `tidb_ddl_reorg_worker_cnt` 设置。 |
| 38 | + - `BATCH_SIZE`:批大小,初始值由系统变量 `tidb_ddl_reorg_batch_size` 设置。 |
| 39 | + |
| 40 | +参数的取值范围和对应系统变量的取值范围保持一致。 |
| 41 | + |
| 42 | +`ADMIN ALTER DDL JOBS` 仅对正在运行的 DDL 作业生效。如果 DDL 作业不存在或者已经结束,执行该语句会报 `ddl job is not running` 的错误。 |
| 43 | + |
| 44 | +以下是部分语句示例: |
| 45 | + |
| 46 | +```sql |
| 47 | +ADMIN ALTER DDL JOBS 101 THREAD = 8; |
| 48 | +ADMIN ALTER DDL JOBS 101 BATCH_SIZE = 256; |
| 49 | +ADMIN ALTER DDL JOBS 101 MAX_WRITE_SPEED = '200MiB'; |
| 50 | +ADMIN ALTER DDL JOBS 101 THREAD = 8, BATCH_SIZE = 256; |
| 51 | +``` |
| 52 | + |
| 53 | +要查看某个 DDL 作业当前的参数值,可以执行 `ADMIN SHOW DDL JOBS`,结果显示在 `COMMENTS` 列: |
| 54 | + |
| 55 | +```sql |
| 56 | +admin show ddl jobs 1; |
| 57 | +``` |
| 58 | + |
| 59 | +``` |
| 60 | ++--------+---------+------------+-----------+--------------+-----------+----------+-----------+----------------------------+----------------------------+----------------------------+--------+-----------------------+ |
| 61 | +| JOB_ID | DB_NAME | TABLE_NAME | JOB_TYPE | SCHEMA_STATE | SCHEMA_ID | TABLE_ID | ROW_COUNT | CREATE_TIME | START_TIME | END_TIME | STATE | COMMENTS | |
| 62 | ++--------+---------+------------+-----------+--------------+-----------+----------+-----------+----------------------------+----------------------------+----------------------------+--------+-----------------------+ |
| 63 | +| 124 | test | t | add index | public | 2 | 122 | 3 | 2024-11-15 11:17:06.213000 | 2024-11-15 11:17:06.213000 | 2024-11-15 11:17:08.363000 | synced | ingest, DXF, thread=8 | |
| 64 | ++--------+---------+------------+-----------+--------------+-----------+----------+-----------+----------------------------+----------------------------+----------------------------+--------+-----------------------+ |
| 65 | +1 row in set (0.01 sec) |
| 66 | +``` |
| 67 | + |
| 68 | +## 语法图 |
| 69 | + |
| 70 | +```ebnf+diagram |
| 71 | +AdminAlterDDLStmt ::= |
| 72 | + 'ADMIN' 'ALTER' 'DDL' 'JOBS' Int64Num AlterJobOptionList |
| 73 | +
|
| 74 | +AlterJobOptionList ::= |
| 75 | + AlterJobOption ( ',' AlterJobOption )* |
| 76 | +
|
| 77 | +AlterJobOption ::= |
| 78 | + identifier "=" SignedLiteral |
| 79 | +``` |
| 80 | + |
| 81 | +## MySQL 兼容性 |
| 82 | + |
| 83 | +`ADMIN ALTER DDL JOBS` 语句是 TiDB 对 MySQL 语法的扩展。 |
| 84 | + |
| 85 | +## 另请参阅 |
| 86 | + |
| 87 | +* [`ADMIN SHOW DDL [JOBS|QUERIES]`](/sql-statements/sql-statement-admin-show-ddl.md) |
| 88 | +* [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md) |
| 89 | +* [`ADMIN PAUSE DDL`](/sql-statements/sql-statement-admin-pause-ddl.md) |
| 90 | +* [`ADMIN RESUME DDL`](/sql-statements/sql-statement-admin-resume-ddl.md) |
0 commit comments