Group commit

From PostgreSQL wiki
Jump to navigationJump to search

Description of feature

Group commit is a feature planned for PostgreSQL 9.2 .

The feature is being developed by Simon Riggs and Peter Geoghegan. The latest -hackers thread on the feature is: http://archives.postgresql.org/pgsql-hackers/2012-01/msg00804.php .

Broadly speaking, a group commit feature enables PostgreSQL to commit a group of transactions in batch, amortizing the cost of flushing WAL. The proposed implementation this page describes is heavily based on the existing synchronous replication implementation. It supercedes the commit_siblings "group commit" implementation of prior versions. This earlier implementation was never really considered to be effective, and its use was weighed down by caveats, so in practice it was only used very infrequently. It is anticipated that the proposed implementation will be turned on by default, and it may not be possible to turn off.

Benchmark

Benchmarking of this feature has been performed by Greg Smith's pgbench tool (https://github.com/gregs1104/pgbench-tools) . Here are results for the initial benchmark:

http://wiki.postgresql.org/images/5/50/Group-commit-pgbench-tools.pdf

Revised results, with semaphore implementation:

http://wiki.postgresql.org/images/c/c6/Group-commit-semaphore-results.pdf

These results were obtained on an ext4 (Linux kernel 3.1) filesystem with LVM. The harddisk used was a WDC WD3200BEKT-08PVMT1 7200 RPM sata disk, with write caching enabled.