RocksDB源码-0x10-wal的WriteBatch协议
跟RocksDB源码-0x0C-Version对比起来看,VersionEdit是manifest文件的逻辑协议,WriteBatch是wal文件的逻辑协议。
除了协议本身的信息内容,最大的区别是VersionEdit协议没有协议头,WriteBatch有协议头。
1 为什么叫WriteBatch
在RocksDB源码-0x05-WAL中wal中每一条记录是一个put操作,下面的测试代码看一下批量提交
1 | |
再看一下wal文件可以看到是一条记录对应10个put操作。所谓的WriteBatch就是在wal里面的一条记录可能对应多个put操作,一次put一个kv仅仅是特例,封装出来WriteBatch作为逻辑协议。
2 WriteBatch的核心成员
WriteBatch有且仅有一个成员
1 | |
3 构建WriteBatch
很简单就是把二进制挪到WriteBatch成员里面
1 | |
RocksDB源码-0x10-wal的WriteBatch协议
https://bannirui.github.io/2026/02/10/RocksDB/RocksDB源码-0x10-wal的WriteBatch协议/