💡
原文中文,约4200字,阅读约需10分钟。
📝
内容提要
LSM树查询从底层开始,向上逐层查找,每层SSTable有序,可用二分查找加速。
🎯
关键要点
-
RocksDB是一个高性能的键值存储库,采用LSM树数据结构,支持高吞吐量写入和快速范围查询。
-
LSM树的优点包括高吞吐量写入、良好的性能和可扩展性,但合并操作可能影响查询性能和磁盘空间使用。
-
LSM树分为内存层(MemTable)和磁盘层,内存层用于缓存最新写入的数据,磁盘层分为多个层级。
-
MemTable采用有序数组、链表、hash表等数据结构,支持快速高吞吐量写入,Flush操作将数据写入磁盘。
-
Immutable MemTable是已刷写到磁盘的不可修改MemTable,Compaction过程中会合并多个Immutable MemTable。
-
SSTable是LSM树中的数据存储结构,数据按key有序存储,支持快速范围查询和迭代访问。
-
Compaction操作合并SSTable文件,减少冗余数据,提升读取性能,避免频繁随机写。
-
压缩策略需考虑读放大、写放大和空间放大问题,以提高查询性能和存储效率。
-
Size-tiered策略通过统计SSTable数量和大小触发Compaction,减少SSTable数量和大小,提高查询性能。
-
Leveled策略通过合并相邻SSTable,减少查询时需要扫描的SSTable数量,提高查询效率。
➡️