一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产
【TiDB 版本】v8.0.0
【问题描述】业务高并发写入存在热点数据,易引发写冲突、性能抖动,想了解热点识别方法与规范拆分优化方案。
【期望得到的帮助】
- 热点定位常用手段有哪些
- 业务层面与数据库侧标准有什么好的优化方案
- 高并发下事务编写规范有哪些
一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产
【TiDB 版本】v8.0.0
【问题描述】业务高并发写入存在热点数据,易引发写冲突、性能抖动,想了解热点识别方法与规范拆分优化方案。
【期望得到的帮助】
热点先看 Dashboard 流量可视化和 tikv_hot_write。业务侧避免自增主键、时间热键,改用离散主键或加盐。库侧可开 hotspot scheduler、合理 split、控制事务大小。事务尽量短、少跨行、冲突键分开提交。
热点定位及解决可以看下官方文档:https://docs.pingcap.com/zh/tidb/stable/troubleshoot-hot-spot-issues/#gatsby-focus-wrapper
大佬能详细分享下吗
热点问题在TiDB里确实常见,给你几个实战经验:
热点定位:
information_schema.tidb_hot_regions表,能直接看到热点region分布拆分优化:
AUTO_RANDOM,或者用SHARD_ROW_ID_BITS=4打散split-table配合预拆分,让数据均匀分布事务编写规范:
SELECT FOR UPDATE范围过大,走主键或唯一索引tidb_disable_txn_auto_retry设0,但注意幂等性先按这几个方向排查,搞不定再贴监控图上来。
业务层高并发的放redis,模糊查询放es。