# Group Write ![700](https://img.jonahgao.com/oss/note/2025p1/rocksdb_group_logging.png) - **Batch write**:批量写 group 的 WAL - **Barrier**: leader 等待 group 内的所有人都写完,然后将 `last_visible_seq` 更新为 group 内最大的 seqno - ![700](https://img.jonahgao.com/oss/note/2025p1/rocksdb_group_wal_write.png) - 来自 [SpanDB Slides](https://www.usenix.org/sites/default/files/conference/protected-files/fast21_slides_chen_hao.pdf) ## Unordred write - [Github PR #5218](https://github.com/facebook/rocksdb/pull/5218) ## Design - leader 写完 WAL 后 就更新 `last_visible_seq` - leader 通知 group 内的其他写线程开始写 memtable - 下一个 write group 已经形成,于此同时之前的 group 的 memtables 写入还在进行中 ## Problem - **immutable snapshots 失效**:还存在小于 snapshot seq 的写入 - **atomic writes 失效**:比如存在 某个还未写入的 write batch,该 batch 的 seq 小于 snapshot 的,那么该 batch 内的第一条写入后就马上可见了,而非整体可见。