forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit9a20a9b
committed
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 buffersconcurrently. This is particularly useful for parallel loading large amountsof data on a system with many CPUs.This has one user-visible change: switching to a new WAL segment withpg_switch_xlog() now fills the remaining unused portion of the segment withzeros. This potentially adds some overhead, but it has been a very commonpractice by DBA's to clear the "tail" of the segment with an externalpg_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 WALinsertion slots. Performance testing suggests that the default, 8, workspretty well for all kinds of worklods, but I left the GUC in place to allowothers with different hardware to test that easily. We might want to removethat before release.Reviewed by Andres Freund.1 parent5372275 commit9a20a9b