为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】v4.0.11
【问题描述】
业务表结构如下:
id虽然没有设置自增属性,但是id的业务写入自增的,id字段如下:
写入慢,系统出现明显的写入热点,如下:
调优方向:
首先,采用SPLIT TABLE TEST_HOTSPOT BETWEEN (0) AND (9223372036854775807) REGIONS 128; 写入性能没有明显提升;热点流量图如下:
写入性能没有明显提升;
然后采用shard_row_id_bits设置为4,表结构如下:
写入性能没有明显提升;
然后,修改表结构,把主键索引去掉,依然没有明显提升;
请教,各位大侠,怎么才能提升写入性能?
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
xfworld
(魔幻之翼)
2
热点写的解决办法:
- 表无主键时,采用 Shard_row_id_bits 才会有效
- 修改主键生成策略
- 采用数据库支持的sequence
- 采用 snowflake 的方式
- 按照目前的主键进行 region切分(效果不会太好)
参考 https://www.bookstack.cn/read/tidb-in-action/session4-chapter6-serial-number.md
以上,建议你改写主键信息,一劳永逸
1和3都尝试过,的确没什么效果;
主键是业务写入的,不是自动生成的;因为主键有业务属性;
xfworld
(魔幻之翼)
4
换可以换个思路
把现在的主键信息做为逻辑主键(追加逻辑主键索引)
然后追加系统主键,采用新的生成方式,这样可以避免热点问题了
将原先的id的主键去掉,增加random主键列,如下图:
写入性能依然只有5000+,没有质的提升;
可以参照这个写入慢的排查文档,按照写入步骤排查一下,看是否有环节是瓶颈
https://asktug.com/t/topic/68031/8
raft rockdb的write duration 是否正常?