创建二级索引进度查询
在pfs关闭的情况下,当用户在生产环境中执行建索引的操作时,比较耗时,为支持用户查询ddl进度,本特性用于在用户关闭performance schema 之后仍可以显示高耗时创建index操作的进度。
约束与限制
- GaussDB(for MySQL)实例内核版本为2.0.51.240300及以上版本支持使用该功能。
- 仅支持创建二级索引查询进度信息,不支持空间索引,全文索引以及其他DDL进度查询。
功能介绍
该特性默认打开,当表在创建索引的时候,通过查询INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS这个表的信息可以获取当前进度,表结构如下:
- THREAD_ID为线程ID。
- QUERY是指客户端下发的创建index语句。
- START_TIME为创建index命令下发时间。
- ELAPSED_TIME是指已经用了多少时间。
- ALTER_TABLE_PHASE是指当前到哪个阶段了。
- WORK_COMPLETED是指当前已经完成的工作量。
- WORK_ESTIMATED是指整个创建index流程一共多少工作量的估计值。
- TIME_REQUIRED是预计还需要多长时间。
- WORK_ESTIMATED和TIME_REQUIRED会随着index创建的进行,一直调整,所以不是并非线性变化。
使用示例
- 执行如下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 查询创建索引的进度