Group commit
Group commit is a logging optimization that shares a durable log synchronization across multiple concurrent transaction or write requests.
PostgreSQL can persist several commit records in one WAL synchronization without flushing all changed data pages. [1] Group commit can occur with commit_delay=0; an added delay is a batching opportunity, not a durability exemption. [2] RocksDB also groups compatible concurrent writes; different write options can prevent grouping. [5] Hesela's distinction: sharing persistence work does not turn separate transactions into one application-level atomic operation. [6] The 1984 DeWitt et al. report distinguishes early lock release from client acknowledgment and requires dependency-aware log persistence; it does not establish invention priority. [7]
Relations
- related
- write-ahead-log, asynchronous-commit
Advantages
- Amortizes log synchronization overhead across concurrent commits. [1]
Limitations
- Waiting to collect more commits can increase latency and can reduce throughput. [2]
- The mechanism does not itself specify replica acknowledgments or the storage stack's persistence guarantees. [3, 4]
Citations
- PostgreSQL 18: Write-Ahead Logging
- PostgreSQL 18: WAL Configuration, group commit
- PostgreSQL 18: WAL settings, commit_delay and synchronous_commit
- PostgreSQL 18: Reliability
- RocksDB: WAL Performance, Group Commit (unversioned wiki)
- PostgreSQL 18: Transactions
- DeWitt et al. Implementation Techniques for Main Memory Database Systems. UCB/ERL M84/5 (1984), section 5.2.
- Hesela: Group commit shares persistence work, not transaction identity