# Group Write

- **Batch write**:批量写 group 的 WAL
- **Barrier**: leader 等待 group 内的所有人都写完,然后将 `last_visible_seq` 更新为 group 内最大的 seqno
- 
- 来自 [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 内的第一条写入后就马上可见了,而非整体可见。