3

环境

一共 4 个 TiKV 实例,CPU 数量每个实例 30-40 核不等。

需要特别说明的是 TiKV 都是机械硬盘,不是 SSD!

image

插入数据

插入数据量 80000 条左右,只有两个字段。

单线程批量插入

image

可以看到单线程批量 insert 效率非常低,OPS 只有 100 左右,80000 条记录插入花了差不多 13 分钟。

image

这个过程中 TiKV 实例的 I/O 比较紧张。按照 TiDB 的文档,IO Util “一般到 80% - 90% 就需要考虑加节点”。

虽说 TiDB 是专门针对 SSD 开发的,但机械硬盘真的就这么不堪吗?俺不甘心,所以试了下多线程批量插入。

多线程批量插入

分别尝试了 3 线程、10 线程、50 线程的批量插入,结果喜人:

image

如上图所示,50 线程的情况下 OPS 直接上升到 2K,80000 条记录的插入时间缩短到了不到一分钟。

与此同时 IO Util 的使用量:

image

虽然 IO Util 的值在 80% 左右可以说是到了瓶颈,但线程的增加貌似并没有带来更大的压力提升。资源消耗的增加体现在了 CPU 上:

image

可见增加 TiKV 集群中的核数和并发量,可以显著的提升 TiDB 插入效率。


捏造的信仰
2.8k 声望272 粉丝

Java 开发人员