07-leveldb查询性能优化方法

Posted anda0109

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07-leveldb查询性能优化方法相关的知识,希望对你有一定的参考价值。

1-Compaction:清除冗余数据,减少磁盘IO

Compaction为什么能提升查询性能,我们从leveldb的原理说起。

如图所示,数据写入leveldb的过程如下:

  1. 数据写入Memtable
  2. Memtable达到一定大小后变为Immutable Memtable
  3. Immutable Memtable通过Minor Compaction写入0层SSTable

数据读取流程如下:

  1. 从Memtable中查询;
  2. 从Immutable Memtable中查询;
  3. 遍历level 0所有文件,若未查找到,进入下一层查找
  4. 若未查找到,继续往下一层查询,直到查到为止或返回not found

由上述读取的流程可知,如果在level 0至level n中存在较多冗余数据,则会导致查询较多的文件,即进行多次无效的IO操作。而Compaction正是清理冗余数据的主要过程。leveldb中内置了多种compaction触发策略:

  1. 当每层文件数或文件大小达到阈值后,触发向下一层的compaction
  2. 当某个文件被查找但未找到目标值的次数达到1024次后,该文件被触发compaction

同时,我们也可以依据自己业务的特点,制定合适的触发策略。例如在业务低峰期触发,或者针对含有大量删除的范围进行compact,来及时清除冗余数据ÿ

以上是关于07-leveldb查询性能优化方法的主要内容,如果未能解决你的问题,请参考以下文章

07-leveldb性能优化

解读数仓常用模糊查询的优化方法

UData查询引擎优化-如何让一条SQL性能提升数倍

Mysql性能优化

Web性能优化:多种优化CSS和加快网站速度的方法

MySql5.6性能优化