- Rocksdb是一个kv存储的数据库引擎,并将数据在硬盘中进行持久化存储;数据首先按照跳表存储将数据写到内存中(数据有序)-Memtable,当内存中的数据大小达到一定的阈值,Memtable转换位Immutable (只读内存,方便持久化硬盘中), Immuatble Memtable 数据持久化存储为SSTable;与此同时,产生一块新的Memtable,方便进行读写;为了防止系统故障导致内存的数据丢失,Memtable写数据时会同步往WAL Log文件写数据,这样当机器重启时,内存中丢失的数据也可以从WAL Log文件中获取;
- 数据持久化的过程称作compaction,数据一层一层进行合并,最终Level N就是磁盘上落地的最终文件;L0 层中的SSTable在文件内部是有序的,而文件中是无序的;L1层中的SSTable由L0 层中的SSTable合并而来,且L1 层中的SSTable中带有元数据(记录了该SSTable中的最小键与最大键);当L0 层中的SSTable向下compaction时,依据key判断L1 层中的SSTable是否包含该key,如果包含,则L0 层的SSTable合并也考虑L1 层中的SST able;
- Rocksdb存储使用跳表可以快速进行查找与插入,并且锁的粒度也尽可能的小;在rocksdb的跳表中,仅需要在修改表高度与插入数据建立连接时加锁。
Rocksdb 学习了解
于 2024-07-25 20:43:57 首次发布