作业帮 & TiDB 7.5.x 使用经验
作者: 是我的海原文来源:https://tidb.net/blog/5f9784d3
近期在使用 TiDB 时遇到的一些小问题的梳理总结,大部分版本都在 6.5.6 和 7.5.2
1、limit 导致的扫描量过大的优化
研发定时任务每天需要扫描大量数据,到时机器网卡被打满,严重影响集群性能。这个 SQL 的主要问题在于:a. ha3data 是 text 字段
b. 虽然是 limit 1000 但是实际上扫描的量远超过 1000 条
解决办法:1、将 utime 时间范围缩短,但是研发人员认为修改成本高 2、修改 tidb_opt_limit_push_down_threshold 的值大于 1000 第二种方法官方老师推荐不要直接修改优化器的参数,可能会遇到未知问题,影响其他 sql ,建议在语句里加 hint
修改之后,网卡使用立即下降
2、为表增加 ttl 属性自动删除过期数据导致的 raft cpu 飙高
我们使用 7.5.2 版本的主要初衷是使用自动过期,可以让研发不用手动清理数据,但是在使用的时候注意两点 a. 尽量在业务低峰时段进行 ttl 的操作 (通过参数设置)
b. 调小 ttl 相关的参数
从 tikv-details 的 grpc 监控中可以看到有大量的 ttl qps, 将 ttl 的运行时间调整成半夜时间范围后,raft cpu 使用率明显下降
3、表的自增 id 连续性问题的
业务反馈表的自增 id 不够连续,每次都是增加 2 个步长,研发人员担心涨的过快超过下游业务消费时出现类型溢出的问题,想要实现 mysql 那样的连续递增
解决办法:
为表增加 AUTO_CACHE_ID 注意:据社区小伙伴反馈,7.5.1 这个属性有 bug ,并且 7.5.1 还有 cdc 相关的配置不兼容 6.5.x 的 bug,需要升级到 7.5.2 之后, 但是 7.5.2 发现了在 fast-ddl 模式下增加索引卡住的情况https://asktug.com/t/topic/1030933
4、频繁删除数据导致越来越慢的问题
问题原因: 在删除数据后有大量的过期版本,但是 rocksdb compact 不够及时,导致后续删除的时候会扫描大量的过期版本而越来越慢,key_skipped_count 会特别大解决办法:1、删除的时候尽量控制条件的范围比如使用 id 或者时间字段做小范围的限制 2、等待 8.x 版本的新功能每天增量 compact
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/af3c387481ab2cdd1e8f77679】。文章转载请联系作者。
评论