大表创建索引引发的问题

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:5.7.25-TiDB-v3.0.5-1-gc0a14b50e4
  • 【问题描述】: 对一个数十亿行的大表创建索引导致所有的ddl任务卡住了,在等待索引创建。 这是什么原理,对tidb中的大表建索引有什么好的方法吗

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

在 TiDB 里面创建索引会经历几个状态变更阶段,对于大表来说,在回填数据阶段时间会比较久,可以通过 ADMIN SHOW DDL JOBS 来查看当前 DDL 的进度。对于正在运行的加索引 DDL 任务,会阻塞对同一张表上的 DDL 操作以及对其他表的加索引 DDL 操作。在不影响业务的情况下,可以通过调整 tidb_ddl_reorg_priority、 tidb_ddl_reorg_worker_cnt、 tidb_ddl_reorg_batch_size 这三个参数来加速加索引的 DDL 操作,具体含义可参考:https://pingcap.com/docs-cn/stable/reference/configuration/tidb-server/tidb-specific-variables/。

好的,感谢答复

但是从实际情况看,对此表的加索引操作,也同时影响了其他表的create和drop,不止其他表的加索引操作

具体的影响需要看下监控信息以及 DDL owner (curl http://{TiDBIP}:10080/info/all) 日志的 tidb.log 信息,如果 TiDB 集群正常,考虑是否是因为资源不足影响了其他 DDL 操作。