tidb的写入慢,只有5000

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】v4.0.11

【问题描述】
image
业务表结构如下:
image
id虽然没有设置自增属性,但是id的业务写入自增的,id字段如下:


写入慢,系统出现明显的写入热点,如下:

调优方向:
首先,采用SPLIT TABLE TEST_HOTSPOT BETWEEN (0) AND (9223372036854775807) REGIONS 128; 写入性能没有明显提升;热点流量图如下:


写入性能没有明显提升;

然后采用shard_row_id_bits设置为4,表结构如下:
image
写入性能没有明显提升;

然后,修改表结构,把主键索引去掉,依然没有明显提升;

请教,各位大侠,怎么才能提升写入性能?


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

热点写的解决办法:

  1. 表无主键时,采用 Shard_row_id_bits 才会有效
  2. 修改主键生成策略
  • 采用数据库支持的sequence
  • 采用 snowflake 的方式
  1. 按照目前的主键进行 region切分(效果不会太好)

参考 https://www.bookstack.cn/read/tidb-in-action/session4-chapter6-serial-number.md
以上,建议你改写主键信息,一劳永逸

1和3都尝试过,的确没什么效果;
主键是业务写入的,不是自动生成的;因为主键有业务属性;

换可以换个思路
把现在的主键信息做为逻辑主键(追加逻辑主键索引)
然后追加系统主键,采用新的生成方式,这样可以避免热点问题了

将原先的id的主键去掉,增加random主键列,如下图:


写入性能依然只有5000+,没有质的提升;
image

可以参照这个写入慢的排查文档,按照写入步骤排查一下,看是否有环节是瓶颈
https://asktug.com/t/topic/68031/8

用法是不是不对?


参考下

raft rockdb的write duration 是否正常?

高峰值有点高吗,可以看下磁盘的情况。