TiDB单线程insert很慢

TiDB版本3.0.1的,单线程插入速度只有每秒15条左右(表只有2个字段),20线程测试,cpu,内存,io和网络没有什么压力,量也能上去,为什么单线程会很慢?

需要看下 TiDB 的监控和 TiDB 节点的 tidb.log ,方便的话提供下。

tidb.log里面没有异常信息全是info信息,而且只有connection信息

可以提供一下慢日志信息吗,慢日志中可以看到几个阶段的耗时,看下耗时主要在哪些阶段

我测试的全是一样的insert 语句,表也只有2个字段,还需要看监控的哪一项,我截图给你

从慢日志中看,sql耗时主要在prewrite阶段,这个一般是锁冲突或者锁等待的原因,可以看下Overview面板中TiDB的相关监控,重点关注Lock Resolve和KV Backoff监控

刚刚加了一下这个监控,不好意思。。模板没加全,你看一下咋回事

再看下TiKV-Detail面板中Scheduler-prewrite和Raft IO中相关的监控

[quote=“gangshen-PingCAP, post:8, topic:1582”]
TiKV-Detail
[/quote]

麻烦trouble-shooting面板中write too slow相关的监控也发现

再申明一下这个监控图形的前提19点15-19点30分是单线程 19点30-19点37左右是多线程,不好意思,拉下这个条件了

看着磁盘还是有压力的,这个盘的 fio 测试数据是怎么样的?

安装的时候跳过fio测试了,目前是在普通硬盘上做的测试,过段时间才会迁移到生产环境,我在同样机器上测试mysql 插入每秒中能达到1.3K条数据写入,总感觉单线程写入TiDB比较慢,不知道原因在哪儿

因为 tikv sst 的存储模型的问题,在普通的机械盘上的性能的确是没有优化的,这边可能是符合预期的。

从监控中可以看到 append log duration 指标已经很高了,这个延迟应该保持在个位数。

如果我换成SSD硬盘,那这个问题就不存在了,可以这么理解么?普通硬盘上插入的速度太慢了,公司一般都有开发环境。。

嗯,现在是这子的。 如果开发环境资源够的话,可以考虑给到 tikv 节点,单副本, ssd 的盘。

遇到了同样的问题。 6线程测试insert性能,刚开始的30分钟还能达到1000TPS,后面直接降到70TPS,并维持在70TPS。 其中一台机器的磁盘util一直在90%以上, 其他服务器磁盘不忙。 奇怪的是TPS会突然降这么多,看了监控图形,只有append log duration、commit log duration在30分钟的时候突然涨了几百倍。不明白的是为啥TPS会在一段时间后突然下降? 难道是数据量增大的原因?