创建二级索引进度查询
操作场景
在pfs关闭的情况下,当用户在生产环境中执行建索引的操作时,比较耗时,为支持用户查询DDL进度,本特性用于在用户关闭performance schema 之后仍可以显示高耗时创建索引操作的进度。
约束与限制
- TaurusDB实例内核版本为2.0.51.240300及以上版本支持使用该功能。内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号。
- 仅支持创建二级索引查询进度信息,不支持空间索引,全文索引以及其他DDL进度查询。
功能介绍
该特性默认打开,当表在创建索引的时候,通过查询INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS这个表的信息可以获取当前进度,表结构如下:
|
表字段 |
含义 |
|---|---|
|
THREAD_ID |
线程ID。 |
|
QUERY |
客户端下发的创建索引的SQL语句。 |
|
START_TIME |
创建索引的SQL语句的下发时间。 |
|
ELAPSED_TIME |
已经花费的时间(单位:秒)。 |
|
ALTER_TABLE_PHASE |
当前阶段。 |
|
WORK_COMPLETED |
当前已经完成的工作量。 |
|
WORK_ESTIMATED |
整个创建索引流程工作量的估计值。 |
|
TIME_REQUIRED |
预计还需花费的时间(单位:秒)。 |
WORK_ESTIMATED和TIME_REQUIRED会随着索引创建的进行而不断调整,因此并非线性变化。
使用示例
- 执行如下SQL查询目标表结构。
desc table_name;例如:
查询表test_stage的结构。
desc test_stage;
图2 查看表结构
从上述表结构中可以看出,表test_stage中不存在二级索引。
- 执行如下SQL,为目标表的某一列增加索引。
ALTER TABLE table_name ADD INDEX idxa(field_name);
例如:
对test_stage表的a列增加索引。
ALTER TABLE test_stage ADD INDEX idxa(a);
- 执行如下SQL查询创建索引的进度。
SELECT QUERY, ALTER_TABLE_PHASE FROM INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS;
图3 查询创建索引的进度