某一时间点insert异常慢,[Prewrite 阶段耗时]由100ms->5s+

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】8.0.11-TiDB-v8.1.1
【操作系统】linux
【部署方式】机器部署
【集群数据量】2
【集群节点数】2
【问题复现路径】
表介绍:表11个字段,最长32位,只有单笔插入、根据id更新,每条记录操作语句在10条以内,历史数据基本不改、不查;
数据量达到200w时发现[sql执行时间分析–Prewrite 阶段耗时]很慢,5s+,发现建表id是自增,但是添加是用的雪花,更新为auto自增后,回到100ms;
问题来了,运行半天,数据量接近250w,发现零星有几个时间点insert 5s+,同一时间会出现70笔这样的慢sql,每次持续1分钟,然后自动恢复;
做了这些分析:
对应慢查询时间段内,数据库cpu、内存没有波动;
region=5;每次慢sql时region相同
慢查询分析:[sql执行时间分析–Prewrite 阶段耗时][Prewrite 涉及 Regions 个数 – 1][最大内存–8.8kb][写入数据量–100B]
事务重试次数=0;

【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
慢日志时间是12:39,耗时5s+,在12:40有波动

看下OverView里面当时服务器其他各项的负载呢,还有Apply/Append/Commit log duration(TiKV-Details → Raft IO)这些监控项呢


大佬,说的是哪一个呀

等答案

1 个赞

落盘慢了

数据落盘慢

查一下IO

iostat 看看

当大批量插入数据的时候,系统似乎有某种机制会自动降速。

问了运维,对应时间点数据库都没啥波动;
除了突然之间慢,还没发现其他异常

grafana的报表

insert so slow

insert 慢首先查等待事件

看看IO有无异常

会不会是服务器的问题,服务器某个时间点负载高影响的

优先查固定 Region 的局部资源竞争、自增 ID 隐性热点、TiKV 节点瞬时 IO 抖动;

调整 Region 分裂阈值,提前分散热点

优化 PD 热点调度策略,加速热点迁移

优化 TiKV Prewrite 阶段配置,减少阻塞