pgsql: Provide recovery_init_sync_method=syncfs.

From: Thomas Munro <tmunro(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Provide recovery_init_sync_method=syncfs.
Date: 2021-03-19 23:15:57
Message-ID: E1lNOLV-00010a-J4@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Provide recovery_init_sync_method=syncfs.

Since commit 2ce439f3 we have opened every file in the data directory
and called fsync() at the start of crash recovery. This can be very
slow if there are many files, leading to field complaints of systems
taking minutes or even hours to begin crash recovery.

Provide an alternative method, for Linux only, where we call syncfs() on
every possibly different filesystem under the data directory. This is
equivalent, but avoids faulting in potentially many inodes from
potentially slow storage.

The new mode comes with some caveats, described in the documentation, so
the default value for the new setting is "fsync", preserving the older
behavior.

Reported-by: Michael Brown <michael(dot)brown(at)discourse(dot)org>
Reviewed-by: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
Reviewed-by: Paul Guo <guopa(at)vmware(dot)com>
Reviewed-by: Bruce Momjian <bruce(at)momjian(dot)us>
Reviewed-by: Justin Pryzby <pryzby(at)telsasoft(dot)com>
Reviewed-by: David Steele <david(at)pgmasters(dot)net>
Discussion: https://postgr.es/m/11bc2bb7-ecb5-3ad0-b39f-df632734cd81%40discourse.org
Discussion: https://postgr.es/m/CAEET0ZHGnbXmi8yF3ywsDZvb3m9CbdsGZgfTXscQ6agcbzcZAw%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/61752afb26404dfc99a535c7a53f7f04dc110263

Modified Files
--------------
configure | 2 +-
configure.ac | 1 +
doc/src/sgml/config.sgml | 35 +++++++++++++++
src/backend/storage/file/fd.c | 65 ++++++++++++++++++++++++++-
src/backend/utils/misc/guc.c | 17 +++++++
src/backend/utils/misc/postgresql.conf.sample | 1 +
src/include/pg_config.h.in | 3 ++
src/include/storage/fd.h | 6 +++
src/tools/msvc/Solution.pm | 1 +
9 files changed, 129 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andrew Dunstan 2021-03-20 01:35:32 Re: pgsql: Allow configurable LZ4 TOAST compression.
Previous Message Tomas Vondra 2021-03-19 23:06:36 pgsql: Use lfirst_int in cmp_list_len_contents_asc