更新时间:2024-09-06 GMT+08:00

创建二级索引进度查询

在pfs关闭的情况下,当用户在生产环境中执行建索引的操作时,比较耗时,为支持用户查询ddl进度,本特性用于在用户关闭performance schema 之后仍可以显示高耗时创建index操作的进度。

约束与限制

  • GaussDB(for MySQL)实例内核版本为2.0.51.240300及以上版本支持使用该功能。
  • 仅支持创建二级索引查询进度信息,不支持空间索引,全文索引以及其他DDL进度查询。

功能介绍

该特性默认打开,当表在创建索引的时候,通过查询INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS这个表的信息可以获取当前进度,表结构如下:

图1 表结构
  • 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创建的进行,一直调整,所以不是并非线性变化。

使用示例

  1. 执行如下SQL查询目标表结构。

    desc table_name;

    例如:

    查询表test_stage的结构。

    desc test_stage;
    图2 查看表结构

    从上述表结构中可以看出,表test_stage中不存在二级索引。

  2. 执行如下SQL,为目标表的某一列增加索引。

    ALTER TABLE table_name ADD INDEX idxa(field_name);

    例如:

    对test_stage表的a列增加索引。

    ALTER TABLE test_stage ADD INDEX idxa(a);

  3. 执行如下SQL查询创建索引的进度。

    SELECT QUERY, ALTER_TABLE_PHASE FROM INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS;

    图3 查询创建索引的进度