RocksDB源码-0x05-WAL
wal机制的作用是防crash,在crash发生后可以进行恢复
1 | |
wal目录下放的是当前正在使用或者刚切换下来的wal
指定了wal目录就用指定的,没有指定就用db顶层目录放wal日志文件
wal下archive目录里面放着的是已经不再写但是暂时还不能删除的wal
rocksdb_ldb dump_wal --walfile=wal/000004.log --header --print_value命令dump文件
1 | |
这几列内容分别表示
- 第1列 1 Sequence Number: 这是该记录的全局序列号。RocksDB里的每一条数据修改都有一个唯一的递增的序列号。它是实现快照读Snapshot Read和数据版本控制MVCC的核心。
- 第2列 1 Count: 这个记录里包含的操作数量。因为是一次Put一个Key,所以这里是1。如果用了WriteBatch批量写入,这里会显示批次内操作的总数。
- 第3列 27 Type: RocksDB内部的操作类型枚举值。27对应kTypeValue是普通的Put操作。
- 第4列 0 Offset: 该记录在WAL文件中的字节偏移量。第一条在0,第二条在34,说明每条记录含头部占用了34字节。
- 第5列 PUT(0): PUT是操作动作,括号里的0表示Column Family ID。没有创建多列族,数据默认都写在ID为0的default列族里。
- 第6列 key的16进制
- 第7列 value的16进制
RocksDB源码-0x05-WAL
https://bannirui.github.io/2026/01/30/RocksDB/RocksDB源码-0x05-WAL/