Increase max_wal_size's default from 128MB to 1GB.
authorAndres Freund
Sun, 15 Mar 2015 16:37:07 +0000 (17:37 +0100)
committerAndres Freund
Sun, 15 Mar 2015 16:37:07 +0000 (17:37 +0100)
The introduction of min_wal_size & max_wal_size in 88e982302684 makes it
feasible to increase the default upper bound in checkpoint
size. Previously raising the default would lead to a increased disk
footprint, even if more segments weren't beneficial.  The low default of
checkpoint size is one of common performance problem users have thus
increasing the default makes sense.  Setups where the increase in
maximum disk usage is a problem will very likely have to run with a
modified configuration anyway.

Discussion: 54F4EFB8[email protected],
    CA+TgmoZEAgX5oMGJOHVj8L7XOkAe05Gnf45rP40m-K3FhZRVKg@mail.gmail.com

Author: Josh Berkus, after a discussion involving lots of people.

doc/src/sgml/config.sgml
doc/src/sgml/wal.sgml
src/backend/access/transam/xlog.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample

index d0f43c64af3e7430e28c4c236d0a0a8c1c5c23eb..b30c68dc138eafacf3b55ac9aa483d8fa4245e0d 100644 (file)
@@ -2430,7 +2430,7 @@ include_dir 'conf.d'
         checkpoints. This is a soft limit; WAL size can exceed
         max_wal_size under special circumstances, like
         under heavy load, a failing archive_command, or a high
-        wal_keep_segments setting. The default is 128 MB.
+        wal_keep_segments setting. The default is 1 GB.
         Increasing this parameter can increase the amount of time needed for
         crash recovery.
         This parameter can only be set in the postgresql.conf
index b57749fdbc3f79947cf50b0834c42efdc7c41e91..f4083c3fe570ebac9a6d172854c86fb0809603f3 100644 (file)
    linkend="guc-checkpoint-timeout"> seconds, or if
     is about to be exceeded,
    whichever comes first.
-   The default settings are 5 minutes and 128 MB, respectively.
+   The default settings are 5 minutes and 1 GB, respectively.
    If no WAL has been written since the previous checkpoint, new checkpoints
    will be skipped even if checkpoint_timeout has passed.
    (If WAL archiving is being used and you want to put a lower limit on how
index 17bd5d85a9562df444abc05ec86c8dfcbf605d8d..72af2c4330398fec0440b2e1cdcad4fc34a01c72 100644 (file)
@@ -79,7 +79,7 @@ extern uint32 bootstrap_data_checksum_version;
 
 
 /* User-settable parameters */
-int            max_wal_size = 8;       /* 128 MB */
+int            max_wal_size = 64;      /* 1 GB */
 int            min_wal_size = 5;       /* 80 MB */
 int            wal_keep_segments = 0;
 int            XLOGbuffers = -1;
index 7196b0b2157b2bcf8de50e5e1196effd94bf46de..26275bda1299d9fa9ee01d409c34deb3b154fcd0 100644 (file)
@@ -2191,7 +2191,7 @@ static struct config_int ConfigureNamesInt[] =
            GUC_UNIT_XSEGS
        },
        &max_wal_size,
-       8, 2, INT_MAX,
+       64, 2, INT_MAX,
        NULL, assign_max_wal_size, NULL
    },
 
index d7a61f1fc4b8da58e424cd9baa0838f93e7ba0cc..110983f176417cc3de91456b3ed48fe6ff7c8c20 100644 (file)
 # - Checkpoints -
 
 #checkpoint_timeout = 5min     # range 30s-1h
-#max_wal_size = 128MB          # in logfile segments
+#max_wal_size = 1GB
 #min_wal_size = 80MB
 #checkpoint_completion_target = 0.5    # checkpoint target duration, 0.0 - 1.0
 #checkpoint_warning = 30s      # 0 disables