Re: PoC: prefetching index leaf pages (for inserts)
От | vignesh C |
---|---|
Тема | Re: PoC: prefetching index leaf pages (for inserts) |
Дата | |
Msg-id | CALDaNm0_upRur_VH6Cegcd7bkO5kwsbP9mzQ1wpaYqd8osQhpg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: PoC: prefetching index leaf pages (for inserts) (Tomas Vondra <tomas.vondra@enterprisedb.com>) |
Список | pgsql-hackers |
On Mon, 6 Nov 2023 at 22:36, Tomas Vondra <tomas.vondra@enterprisedb.com> wrote: > > Seems cfbot was not entirely happy about the patch, for two reasons: > > 1) enable_insert_prefetching definition was inconsistent (different > boot/default values, missing in .conf and so on) > > 2) stupid bug in execReplication, inserting index entries twice > > The attached v3 should fix all of that, I believe. > > > As for the path forward, I think the prefetching is demonstrably > beneficial. There are cases where it can't help or even harms > performance. I think the success depends on three areas: > > (a) reducing the costs of the prefetching - For example right now we > build the index tuples twice (once for prefetch, once for the insert), > but maybe there's a way to do that only once? There are also predicate > indexes, and so on. > > (b) being smarter about when to prefetch - For example if we only have > one "prefetchable" index, it's somewhat pointless to prefetch (for > single-row cases). And so on. > > (c) not prefetching when already cached - This is somewhat related to > the previous case, but perhaps it'd be cheaper to first check if the > data is already cached. For shared buffers it should not be difficult, > for page cache we could use preadv2 with RWF_NOWAIT flag. The question > is if this is cheap enough to be cheaper than just doing posix_fadvise > (which however only deals with shared buffers). CFBot shows that the patch does not apply anymore as in [1]: === Applying patches on top of PostgreSQL commit ID 7014c9a4bba2d1b67d60687afb5b2091c1d07f73 === === applying patch ./0001-insert-prefetch-v3.patch patching file src/backend/access/brin/brin.c Hunk #1 FAILED at 117. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/access/brin/brin.c.rej patching file src/backend/access/gin/ginutil.c Hunk #1 FAILED at 64. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/access/gin/ginutil.c.rej patching file src/backend/access/gist/gist.c Hunk #1 FAILED at 86. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/access/gist/gist.c.rej patching file src/backend/access/hash/hash.c Hunk #1 FAILED at 83. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/access/hash/hash.c.rej Please post an updated version for the same. [1] - http://cfbot.cputube.org/patch_46_4622.log Regards, Vignesh
В списке pgsql-hackers по дате отправления: