pgsql: Change CRCs in WAL records from 64bit to 32bit for performance

From: tgl(at)svr1(dot)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Change CRCs in WAL records from 64bit to 32bit for performance
Date: 2005-06-02 05:55:30
Message-ID: 20050602055530.378A5528BF@svr1.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Change CRCs in WAL records from 64bit to 32bit for performance reasons.
Instead of a separate CRC on each backup block, include backup blocks
in their parent WAL record's CRC; this is important to ensure that the
backup block really goes with the WAL record, ie there was not a page
tear right at the start of the backup block. Implement a simple form
of compression of backup blocks: drop any run of zeroes starting at
pd_lower, so as not to store the unused 'hole' that commonly exists in
PG heap and index pages. Tweak PageRepairFragmentation and related
routines to ensure they keep the unused space zeroed, so that the above
compression method remains effective. All per recent discussions.

Modified Files:
--------------
pgsql/src/backend/access/nbtree:
nbtpage.c (r1.84 -> r1.85)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtpage.c.diff?r1=1.84&r2=1.85)
nbtxlog.c (r1.20 -> r1.21)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtxlog.c.diff?r1=1.20&r2=1.21)
pgsql/src/backend/access/transam:
xlog.c (r1.194 -> r1.195)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c.diff?r1=1.194&r2=1.195)
pgsql/src/backend/storage/page:
bufpage.c (r1.63 -> r1.64)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/page/bufpage.c.diff?r1=1.63&r2=1.64)
pgsql/src/backend/utils/hash:
pg_crc.c (r1.12 -> r1.13)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/hash/pg_crc.c.diff?r1=1.12&r2=1.13)
pgsql/src/bin/pg_controldata:
pg_controldata.c (r1.23 -> r1.24)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_controldata/pg_controldata.c.diff?r1=1.23&r2=1.24)
pgsql/src/bin/pg_resetxlog:
pg_resetxlog.c (r1.32 -> r1.33)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_resetxlog/pg_resetxlog.c.diff?r1=1.32&r2=1.33)
pgsql/src/include/access:
xlog.h (r1.61 -> r1.62)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog.h.diff?r1=1.61&r2=1.62)
xlog_internal.h (r1.6 -> r1.7)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog_internal.h.diff?r1=1.6&r2=1.7)
pgsql/src/include/catalog:
pg_control.h (r1.21 -> r1.22)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_control.h.diff?r1=1.21&r2=1.22)
pgsql/src/include/utils:
pg_crc.h (r1.12 -> r1.13)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/pg_crc.h.diff?r1=1.12&r2=1.13)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message User Dpage 2005-06-02 08:17:05 pginstaller - web: Correct download link.
Previous Message Bruce Momjian 2005-06-02 01:27:58 pgsql: Completed: < o Allow COPY to understand \x as a hex byte > o