Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index.
Peter Geoghegan <pg@bowt.ie>
On Wed, Feb 19, 2020 at 8:14 AM Anastasia Lubennikova <a.lubennikova@postgrespro.ru> wrote: > Thank you for this work. I've looked through the patches and they seem > to be ready for commit. > I haven't yet read recent documentation and readme changes, so maybe > I'll send some more feedback tomorrow. Great. > Is there any specific reason, why we need separate btnameequalimage, > bpchar_equalimage and bttextequalimage functions? > As far as I see, they have the same implementation. Not really. This approach allows us to reverse the decision to enable deduplication in a point release, which is theoretically useful. OTOH, if that's so important, why not have many more support function 4 implementations (one per opclass)? I suspect that we would just disable deduplication in a hard-coded fashion if we needed to disable it due to some issue that transpired. For example, we could do this by modifying _bt_allequalimage() itself. > I would simply move it to debug level for all cases. Since from user's > perspective it doesn't differ that much from the case where > deduplication is applicable in general, but not very efficient due to > data distribution. I was more concerned about cases where the user would really like to use deduplication, but wants to make sure that it gets used. And doesn't want to install pageinspect to find out. > I also noticed that this is not consistent with ALTER index. For > example, alter index idx_n set (deduplicate_items =true); won't show any > message about deduplication. But that's a change in the user's preference. Not a change in whether or not it's safe in principle. > In my opinion, this message is too specific for default behavior. It > exposes internal details without explanation and may look to user like > something went wrong. You're probably right about that. I just wish that there was some way of showing the same information that was discoverable, and didn't require the use of pageinspect. If I make it a DEBUG1 message, then it cannot really be documented. -- 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