Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index.
Peter Geoghegan <pg@bowt.ie>
On Thu, Feb 20, 2020 at 7:38 AM Anastasia Lubennikova <a.lubennikova@postgrespro.ru> wrote: > I don't think this patch really needs more nitpicking ) But when has that ever stopped it? :-) > User can discover this with a complex query to pg_index and pg_opclass. > To simplify this, we can probably wrap this into function or some field > in pg_indexes. A function isn't a real user interface, though -- it probably won't be noticed. I think that there is a good chance that it just won't matter. The number of indexes that won't be able to support deduplication will be very small in practice. The important exceptions are INCLUDE indexes and nondeterministic collations. These exceptions make sense intuitively, and will be documented as limitations of those other features. The numeric/float thing doesn't really make intuitive sense, and numeric is an important datatype. Still, numeric columns and float columns seem to rarely get indexed. That just leaves container type opclasses, like anyarray and jsonb. Nobody cares about indexing container types with a B-Tree index, with the possible exception of expression indexes on a jsonb column. I don't see a way around that, but it doesn't seem all that important. Again, applications are unlikely to have more than one or two of those. The *overall* space saving will probably be almost as good as if the limitation did not exist. > Anyway, I would wait for feedback from pre-release testers. Right -- let's delay making a final decision on it. Just like the decision to enable it by default. It will work this way in the committed version, but that isn't supposed to be the final word on it. -- 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