大家好,线上一个50亿的表添加二级索引用来优化查询,大家有实施过的没,有什么注意的点嘛
加过,admin show ddl jobs预估下总时长,注意关注duration是否有大幅波动以及对业务的影响
当时大概加了多久
尽量在业务限时处理吧可以用ADMIN SHOW DDL或者ADMIN SHOW DDL JOBS;查看进度,必要时ADMIN PAUSE DDL;暂停或者取消
对集群的影响
1)TiKV CPU 升高
因为:
Scan Table
Encode Index Key
Write RocksDB
会导致:
tikv cpu ↑
尤其是:
coprocessor
raftstore
2)IO 升高
写入:
index key
进入:
rocksdb
raft log
磁盘压力会明显增加。
3)Region 调度增加
因为:
大量写入
可能触发:
split
balance
PD 调度会增加。
4)业务 SQL 变慢
原因:
资源竞争
尤其是:
OLAP
join
大查询
会明显感知。
2 个赞
可以使用方案:
分区 + 索引
或者:
影子表
方案:
新建表
create table new_big like big_big;
加索引
add index
同步
用:
TiCDC
同步数据。
最后:
rename table
切换。
这是 零影响方案。
2 个赞
只有在数据量大的时候,才能监测出性能
- 50 亿表 TiDB 加索引完全安全,核心是限速 + 低峰 + 单索引
- 必做:测试验证、集群巡检、限流参数、低峰执行
- 全程监控,出现负载过高直接暂停 DDL
- 完成后必须验证索引生效 + 业务监控
具体记不得了,肯定是超过10小时了
老板,索引加好了没?花了多长时间。期间性能波动怎么样
添加的结果怎么样啊,最后,耗时多久,资源情况怎么样呢
- 不要直接执行 CREATE INDEX 默认配置下,加索引会抢占大量 CPU/IO/ 网络,直接打崩业务。
- 不要在业务高峰期执行 哪怕限流,也必须选低峰期 / 凌晨开始。
- 不要同时加多个索引 50 亿表一次只加一个,多个会导致资源翻倍耗尽。
- 不要忽略集群负载 加索引前必须确认:集群无慢查询、无热点、无备份 / 导出任务。
没有,这个成本和风险都很高啊
索引呢
1 个赞
学习了
测试环境跑下就知道效果。
在 v6 版本做过百亿表的加索引,做了一周多,你这个已经 v8.5 版本了,开 dxf 问题不大,慢慢搞,有问题就暂停 DDL
加过,两天吧,尽量选择业务低峰期加
最后怎么搞的,是避开高峰期添加的吗