文档数据库服务 DDS-DDS 4.2及其以上版本切RocksDB存储引擎相关问题Q&A:RocksDB优势在哪里?

时间:2024-04-03 14:11:46

RocksDB优势在哪里?

表1从开源生态、存储空间、可定制化、内存高压场景、频繁更新删除场景、多表场景六个方面描述了RocksDB对比WiredTiger的优势。

表1 RocksDB与WiredTiger对比

存储引擎

RocksDB

WiredTiger

开源生态

RocksDB相比WiredTiger有更好的开源生态(github stars),一些知名数据库比如TIDB/CRDB/YUGADB都采用了RocksDB做为存储引擎。

开源社区生态不如RocksDB。

存储空间

RocksDB数据写入过程中,部分业务场景会临时保存多个版本的数据,多版本数据会在后续做异步归并为最终版本,因此存储空间可能会存在临时上涨。

WiredTiger落盘只保留最新版本的数据,存储空间消耗相对少。

可定制化

RocksDB性能调优参数较多,支持根据业务的读写能力要求做定制化的参数修改。

WiredTiger性能调优参数较少。

内存高压场景

RocksDB读写性能稳定,不会随着内存压力变化。

WiredTiger需要频繁地刷脏页,进行内存与磁盘数据置换,引起读写性能波动比较大。

频繁更新删除场景

RocksDB在积攒了一定量的新写数据后,会自动异步触发后台compact线程对同一数据的多版本进行归并聚合,释放多余的磁盘空间,因此基本上不会出现磁盘碎片化问题。

WiredTiger在删除数据进行数据多版本归并聚合后,会空余出磁盘空间碎片,并且不会将这部分磁盘空间返回给操作系统,而是留待后续写入使用,磁盘碎片化问题较为明显。

多表场景

RocksDB支持10K以上的表及索引数量。

WiredTiger在表及索引数量达到1K以上时,读写性能会受到影响。

support.huaweicloud.com/dds_faq/dds_faq_0091.html