tidb,单个表数据量有2000万左右,表大小8G左右,如果需要修改表结构(新增索引),有什么比较好的方式?

【 TiDB 使用环境】生产环境 /测试/
【 TiDB 版本】
需要对某个表修改表结构(新增索引),数据量太大每次修改都会失败,有什么比较好的方式,类似于pt-online-schema-change这些工具也行
【遇到的问题:问题现象及影响】
【资源配置】
image

建议你看一下这个。是一个比较全面的测试。可以参考一下。

tidb本身就支持在线online ddl,好几亿的表,数据量上百G的表都成功改过。
你需要查看具体的失败原因,根据错误提示进行修正

不是生产系统访问很频繁的表,直接操作就可以了,8G大小,2000万数据也不大;

数据量也不算太大,可以直接修改

主要是时间,间隔太长会影响原来的业务

正常online ddl ,应该没有啥影响,

首先,说一下要怎么改表结构,改不同的东西代价也不一样。
然后,2千万数据不算大,调整表结构不会太慢

1 个赞

先看看你是哪个版本。
不过一般直接改就行的。
实时观察情况。

加索引

找个空闲时间窗口,直接加

v7.0加索引应该很快。

以下是我们真是的案例,并且我们是机械盘的虚拟机。

升级前版本是v5.1.0,数据库表现:添加索引特别慢,稍微大点的表就要几十分钟甚至超过1个小时。
升级后版本是v6.5.4,数据库表现:1.6亿数据表加索引,用时192秒,3分钟左右。

2 个赞

添加索引,8gb 直接加

我这边几亿的表都是直接加列和索引的,没有中断过啊


这俩参数可以调整的大一点

1 个赞

磁盘空间多大啊,是不是空间不够失败的,2000万左右应该很快的

失败是不是tidb节点没配置临时空间?

这个规模的数据,直接加索引完全没问题,如果一直卡住或者失败,试着检查下tidb-server的临时目录,如果没有自动建的话手动建一下,v7.10-v7.1.1 有个bug, 默认路径为:
/tmp/tidb/tmp_ddl-4000
chown tidb:tidb -R /tmp/tidb/tmp_ddl-4000

自持online ddl

tidb什么版本的?报什么错了?有日志吗?最好还是在业务低峰期修改。