Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index.
Peter Geoghegan <pg@bowt.ie>
On Wed, Sep 11, 2019 at 5:38 AM Anastasia Lubennikova <a.lubennikova@postgrespro.ru> wrote: > Attached is v12, which contains WAL optimizations for posting split and > page > deduplication. Hmm. So v12 seems to have some problems with the WAL logging for posting list splits. With wal_debug = on and wal_consistency_checking='all', I can get a replica to fail consistency checking very quickly when "make installcheck" is run on the primary: 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30423A0; LSN 0/30425A0: prev 0/3041C78; xid 506; len 3; blkref #0: rel 1663/16385/2608, blk 56 FPW - Heap/INSERT: off 20 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30425A0; LSN 0/3042F78: prev 0/30423A0; xid 506; len 4; blkref #0: rel 1663/16385/2673, blk 13 FPW - Btree/INSERT_LEAF: off 138; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3042F78; LSN 0/3043788: prev 0/30425A0; xid 506; len 4; blkref #0: rel 1663/16385/2674, blk 37 FPW - Btree/INSERT_LEAF: off 68; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3043788; LSN 0/30437C0: prev 0/3042F78; xid 506; len 28 - Transaction/ABORT: 2019-09-11 15:01:06.291717-07; rels: pg_tblspc/16388/PG_13_201909071/16385/16399 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30437C0; LSN 0/3043A30: prev 0/3043788; xid 507; len 3; blkref #0: rel 1663/16385/1247, blk 9 FPW - Heap/INSERT: off 9 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3043A30; LSN 0/3043D08: prev 0/30437C0; xid 507; len 4; blkref #0: rel 1663/16385/2703, blk 2 FPW - Btree/INSERT_LEAF: off 51; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3043D08; LSN 0/3044948: prev 0/3043A30; xid 507; len 4; blkref #0: rel 1663/16385/2704, blk 1 FPW - Btree/INSERT_LEAF: off 169; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3044948; LSN 0/3044B58: prev 0/3043D08; xid 507; len 3; blkref #0: rel 1663/16385/2608, blk 56 FPW - Heap/INSERT: off 21 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3044B58; LSN 0/30454A0: prev 0/3044948; xid 507; len 4; blkref #0: rel 1663/16385/2673, blk 8 FPW - Btree/INSERT_LEAF: off 156; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30454A0; LSN 0/3045CC0: prev 0/3044B58; xid 507; len 4; blkref #0: rel 1663/16385/2674, blk 37 FPW - Btree/INSERT_LEAF: off 71; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3045CC0; LSN 0/3045F48: prev 0/30454A0; xid 507; len 3; blkref #0: rel 1663/16385/1247, blk 9 FPW - Heap/INSERT: off 10 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3045F48; LSN 0/3046240: prev 0/3045CC0; xid 507; len 4; blkref #0: rel 1663/16385/2703, blk 2 FPW - Btree/INSERT_LEAF: off 51; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3046240; LSN 0/3046E70: prev 0/3045F48; xid 507; len 4; blkref #0: rel 1663/16385/2704, blk 1 FPW - Btree/INSERT_LEAF: off 44; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3046E70; LSN 0/3047090: prev 0/3046240; xid 507; len 3; blkref #0: rel 1663/16385/2608, blk 56 FPW - Heap/INSERT: off 22 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3047090; LSN 0/30479E0: prev 0/3046E70; xid 507; len 4; blkref #0: rel 1663/16385/2673, blk 8 FPW - Btree/INSERT_LEAF: off 156; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30479E0; LSN 0/3048420: prev 0/3047090; xid 507; len 4; blkref #0: rel 1663/16385/2674, blk 38 FPW - Btree/INSERT_LEAF: off 10; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3048420; LSN 0/30486B0: prev 0/30479E0; xid 507; len 3; blkref #0: rel 1663/16385/1259, blk 0 FPW - Heap/INSERT: off 6 flags 0x00 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/30486B0; LSN 0/3048C30: prev 0/3048420; xid 507; len 4; blkref #0: rel 1663/16385/2662, blk 2 FPW - Btree/INSERT_LEAF: off 119; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3048C30; LSN 0/3049668: prev 0/30486B0; xid 507; len 4; blkref #0: rel 1663/16385/2663, blk 1 FPW - Btree/INSERT_LEAF: off 42; in_posting_offset 0 4448/2019-09-11 15:01:06 PDT LOG: REDO @ 0/3049668; LSN 0/304A550: prev 0/3048C30; xid 507; len 4; blkref #0: rel 1663/16385/3455, blk 1 FPW - Btree/INSERT_LEAF: off 2; in_posting_offset 1 4448/2019-09-11 15:01:06 PDT FATAL: inconsistent page found, rel 1663/16385/3455, forknum 0, blkno 1 4448/2019-09-11 15:01:06 PDT CONTEXT: WAL redo at 0/3049668 for Btree/INSERT_LEAF: off 2; in_posting_offset 1 4447/2019-09-11 15:01:06 PDT LOG: startup process (PID 4448) exited with exit code 1 4447/2019-09-11 15:01:06 PDT LOG: terminating any other active server processes 4447/2019-09-11 15:01:06 PDT LOG: database system is shut down I regularly use this test case for the patch -- I think that I fixed a similar problem in v11, when I changed the same WAL logging, but I didn't mention it until now. I will debug this myself in a few days, though you may prefer to do it before then. -- Peter Geoghegan
Commits
-
Teach pageinspect about nbtree deduplication.
- 93ee38eade1b 13.0 landed
-
Doc: Fix deduplicate_items index term.
- e537aed61db7 13.0 landed
-
Revise BTP_HAS_GARBAGE nbtree VACUUM comments.
- 4b25f5d0ba01 13.0 cited
-
Remove unneeded "pin scan" nbtree VACUUM code.
- 9f83468b3536 13.0 landed
-
Cleanup code in reloptions.h regarding reloption handling
- 50d22de9325f 13.0 cited
-
Catch invalid typlens in a couple of places
- 8557a6f10ca6 13.0 cited
-
Compute XID horizon for page level index vacuum on primary.
- 558a9165e081 12.0 cited
-
Make heap TID a tiebreaker nbtree index column.
- dd299df8189b 12.0 cited
-
Avoid pin scan for replay of XLOG_BTREE_VACUUM in all cases
- 3e4b7d87988f 9.6.0 cited
-
Revert buggy optimization of index scans
- c7111d11b188 9.6.0 cited
-
Restructure index access method API to hide most of it at the C level.
- 65c5fcd353a8 9.6.0 cited
-
Reduce pinning and buffer content locking for btree scans.
- 2ed5b87f96d4 9.5.0 cited
-
Avoid scanning nulls at the beginning of a btree index scan.
- 1a77f8b63d15 9.2.0 cited