空表建索引需要至少3秒

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
v5.3.0

【概述】 场景 + 问题概述

应用初始化的时候批量创建索引比较缓慢,空表建一个索引需要至少3秒

【背景】 做过哪些操作

【现象】 业务和数据库现象
3个tidb集群上,任意一张表创建一个索引,最短耗时需要3秒左右。
【问题】 当前遇到的问题

【业务影响】
业务库初始化的时候,需要创建大量的索引,现在导致初始化业务库耗时非常长。

【TiDB 版本】
v5.3.0
【应用软件及版本】
spring cloud 2021
【附件】 相关日志及配置信息

  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息

监控(https://metricstool.pingcap.com/)

  • TiDB-Overview Grafana监控
  • TiDB Grafana 监控
  • TiKV Grafana 监控
  • PD Grafana 监控
  • 对应模块日志(包含问题前后 1 小时日志)

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

2 个赞

DML 操作慢不?

admin show ddl jobs; 这个看看有些啥

1 个赞

其他操作正常,只有创建索引比较慢,比如下面这张空表,创建索引需要2.7秒

1 个赞

我们有3个tidb集群,问题都是一样的,空表索引需要3秒

1 个赞

随便建了个表,也要近3秒
image

1 个赞

是的,这个有办法优化么,初始化业务库的时候,需要创建几百张表,几百个索引,一轮跑下来,要1-2个小时。。。

1 个赞

几秒应该是符合预期的,如果是空表,可以考虑把 index 放到建表语句一并执行

2 个赞

我试了一下放一起执行,还是一样的时间

他的意思是在建表的时候就带上索引,类似于:
image

2 个赞

这个可以,要快不少

建表就带上索引,这个黑科技不错。

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。