CPU/IO飚高是为啥?

刚刚开始了解tidb/leveldb 看这论坛经常看到CPU/IO飚高之类的问题 有些疑问

  1. 关系数据库往往一条数据分布在几张表 更新查询在leveldb这种存储应该有放大效应 leveldb的顺序写并不是啥发明 相反我觉得反而不适合于存储需要经常更新的关系数据上 tidb的cpu/io莫名飚高是否由于leveldb本身合并动作导致的? 只是猜测
  2. 如果拿相同的硬件配置 把mysql的update都用insert/append来实现(insert+删除标识) 与tidb比较是否有明显的性能差距 不知你们是否有这方面的比较数据

第一个问题:cpu/io 高不仅仅是因为 RocksDB 的写放大,还有其他的影响因素。TiKV 为了保证分布式事务不得不采取延时删除,以及为了保证多副本之间的一致性需要写额外的 raft log 这些也是原因之一。目前我们也正在针对这些问题进行改进。比如说通过 compaction filter 来在compaction job 中直接删除数据以避免写入删除标记造成的写放大;通过自研的顺序日志存储引擎 RaftEngine 来减少写入 raft log 造成的额外开销等等。第二个问题,没有做过测试。

了解了 多谢答疑

:+1: 好的

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。