pgsql: Allow parallel zstd compression when taking a base backup. - Mailing list pgsql-committers

From Robert Haas
Subject pgsql: Allow parallel zstd compression when taking a base backup.
Date
Msg-id E1nZYin-0000WJ-E8@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Allow parallel zstd compression when taking a base backup.

libzstd allows transparent parallel compression just by setting
an option when creating the compression context, so permit that
for both client and server-side backup compression. To use this,
use something like pg_basebackup --compress WHERE-zstd:workers=N
where WHERE is "client" or "server" and N is an integer.

When compression is performed on the server side, this will spawn
threads inside the PostgreSQL backend. While there is almost no
PostgreSQL server code which is thread-safe, the threads here are used
internally by libzstd and touch only data structures controlled by
libzstd.

Patch by me, based in part on earlier work by Dipesh Pandit
and Jeevan Ladhe. Reviewed by Justin Pryzby.

Discussion: http://postgr.es/m/CA+Tgmobj6u-nWF-j=FemygUhobhryLxf9h-wJN7W-2rSsseHNA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/51c0d186d99a18e6aae53003f5138f20991e15a6

Modified Files
--------------
doc/src/sgml/protocol.sgml                    | 12 +++++--
doc/src/sgml/ref/pg_basebackup.sgml           |  4 +--
src/backend/replication/basebackup_zstd.c     | 45 +++++++++++++++++----------
src/bin/pg_basebackup/bbstreamer_zstd.c       | 40 +++++++++++++++++-------
src/bin/pg_basebackup/t/010_pg_basebackup.pl  |  5 +++
src/bin/pg_verifybackup/t/009_extract.pl      | 29 +++++++++++++++--
src/bin/pg_verifybackup/t/010_client_untar.pl | 33 ++++++++++++++++++--
src/common/backup_compression.c               | 16 ++++++++++
src/include/common/backup_compression.h       |  2 ++
9 files changed, 147 insertions(+), 39 deletions(-)


pgsql-committers by date:

Previous
From: Robert Haas
Date:
Subject: pgsql: Simplify a needlessly-complicated regular expression.
Next
From: Peter Eisentraut
Date:
Subject: pgsql: doc: Document range_intersect_agg(anymultirange)