通用场景下tikv的copTask在内存中扫描数据太慢,比mysql、pg等都慢

OK,定性的分析来说,LSM tree的读性能要比Btree的性能差一些。有一些mitigation可以尝试:

  1. storage.block-cache.num-shard-bits, 默认是6。如果block cache设置超过8GB的话,可以调大num-shard-bits到 log2(block cache capacity / 128MB)。调大可以增加block cache的并发度
    2)rocksdb.writecf/defaultcf.num-levels 减少层数对读有帮助,但是会增加写放大。所以这个需要根据特定需求和workload权衡利弊。

从产品层面LSM tree有一些读的优化可以做,但这些改动我们有一些探索,但不是短期能落地的。
可以了解一下你们的硬件配置和数据大小吗以及你们的诉求。

另外TiFlash你们是否有打开。TiDB会自动选择tikv或者TiFlash,在有些场景会有大的提升。

1 个赞