git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 5372275) | patch
Improve scalability of WAL insertions.
Mon, 8 Jul 2013 08:23:56 +0000 (11:23 +0300)
Mon, 8 Jul 2013 08:23:56 +0000 (11:23 +0300)
commit 9a20a9b21baa819df1760b36f3c36f25d11fc27b
Improve scalability of WAL insertions.

This patch replaces WALInsertLock with a number of WAL insertion slots,
allowing multiple backends to insert WAL records to the WAL buffers
concurrently. This is particularly useful for parallel loading large amounts
of data on a system with many CPUs.

This has one user-visible change: switching to a new WAL segment with
pg_switch_xlog() now fills the remaining unused portion of the segment with
zeros. This potentially adds some overhead, but it has been a very common
practice by DBA's to clear the "tail" of the segment with an external
pg_clearxlogtail utility anyway, to make the WAL files compress better.
With this patch, it's no longer necessary to do that.

This patch adds a new GUC, xloginsert_slots, to tune the number of WAL
insertion slots. Performance testing suggests that the default, 8, works
pretty well for all kinds of worklods, but I left the GUC in place to allow
others with different hardware to test that easily. We might want to remove
that before release.

Reviewed by Andres Freund.
src/backend/access/transam/xlog.c diff | blob | blame | history
src/backend/storage/lmgr/spin.c diff | blob | blame | history
src/backend/utils/misc/guc.c diff | blob | blame | history
src/include/access/xlog.h diff | blob | blame | history
src/include/access/xlogdefs.h diff | blob | blame | history
src/include/storage/lwlock.h diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /