tidb如何给大表加索引,直接alter会导致数据库卡死,现在这种问题有没有什么经验

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
如标题,大表不敢直接操作,现在tidb有没有什么标准流程

几十亿的表直接加索引没什么问题

我这边几亿的表直接就卡死了

不会卡死,这个没啥标准流程,就直接执行add index就好了,因为加的时间长,执行add index的窗口直接ctrl+关掉就好了,tidb会在后台继续做DDL,这张表加完索引前不能做其他DDL了,然后关注下DDL进度,看情况调整DDL并行度就好了,我最大给几十T的表加的索引一周多跑完了 :joy_cat:

1 个赞

生产环境的啊,别说一周了,一天不能用都不行

卡死是什么表现?

直接oom了

你确定是加索引引起的oom? 我看过加索引过程中消耗内存很少了

确定,只有这一条执行

给你截图了

还有一种方案就是建新表,加索引,然后导数据,最后rename替换表。这样是和流水表或者日志表。但是感觉这样比alter table耗费的资源更多。

1 个赞

升级版本

加索引应该不会导致oom。
但是我看你来自10.29.133.205的这个查询就有点危险了。最好看看这个sql最后使用了多少内存。

可能是你的资源本来就不够用

tidb 的cpu平时就这么高吗,集群不正常吧

那个就执行了11秒兄弟

已经说过了是因为alter才变得这么高,平常很低了

可能是集群本来负载太高了,把tidb_ddl_reorg_worker_cnt 调到最小跑跑看