Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index.
Peter Geoghegan <pg@bowt.ie>
Attachments
- v25-0001-Remove-dead-pin-scan-code-from-nbtree-VACUUM.patch (application/x-patch) patch v25-0001
- v25-0004-DEBUG-Show-index-values-in-pageinspect.patch (application/x-patch) patch v25-0004
- v25-0003-Teach-pageinspect-about-nbtree-posting-lists.patch (application/x-patch) patch v25-0003
- v25-0002-Add-deduplication-to-nbtree.patch (application/x-patch) patch v25-0002
On Mon, Nov 18, 2019 at 5:26 PM Peter Geoghegan <pg@bowt.ie> wrote: > Attached is v24. This revision doesn't fix the problem with > xl_btree_insert record bloat Attached is v25. This version: * Adds more documentation. * Adds a new GUC -- bree_deduplication. A new GUC seems necessary. Users will want to be able to configure the feature system-wide. A storage parameter won't let them do that -- only a GUC will. This also makes it easy to enable the feature with unique indexes. * Fixes the xl_btree_insert record bloat issue. * Fixes a smaller issue with VACUUM/xl_btree_vacuum record bloat. We shouldn't be using noticeably more WAL than before, at least in cases that don't use deduplication. These two items fix cases where that was possible. There is a new refactoring patch including with v25 that helps with the xl_btree_vacuum issue. This new patch removes unnecessary "pin scan" code used by B-Tree VACUUMs, which was effectively disabled by commit 3e4b7d87 without being removed. This is independently useful work that I planned on doing already, that also cleans things up for VACUUM with posting list tuples. It reclaims some space within the xl_btree_vacuum record type that was wasted (we don't even use the lastBlockVacuumed field anymore), allowing us to use that space for new deduplication-related fields without increasing total WAL space. Anastasia: I hope to be able to commit the first patch before too long. It would be great if you could review that. -- 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