From: | Konstantin Knizhnik <knizhnik(at)garret(dot)ru> |
---|---|
To: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: index prefetching |
Date: | 2024-01-19 08:34:42 |
Message-ID: | 22dbfb04-24e4-49b1-b3fa-5367c8d171d2@garret.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 18/01/2024 6:00 pm, Tomas Vondra wrote:
> On 1/17/24 09:45, Konstantin Knizhnik wrote:
>> I have integrated your prefetch patch in Neon and it actually works!
>> Moreover, I combined it with prefetch of leaf pages for IOS and it also
>> seems to work.
>>
> Cool! And do you think this is the right design/way to do this?
I like the idea of prefetching TIDs in executor.
But looking though your patch I have some questions:
1. Why it is necessary to allocate and store all_visible flag in data
buffer. Why caller of IndexPrefetchNext can not look at prefetch field?
+ /* store the all_visible flag in the private part of the entry */
+ entry->data = palloc(sizeof(bool));
+ *(bool *) entry->data = all_visible;
2. Names of the functions `IndexPrefetchNext` and
`IndexOnlyPrefetchNext` are IMHO confusing because they look similar and
one can assume that for one is used for normal index scan and last one -
for index only scan. But actually `IndexOnlyPrefetchNext` is callback
and `IndexPrefetchNext` is used in both nodeIndexscan.c and
nodeIndexonlyscan.c
From | Date | Subject | |
---|---|---|---|
Next Message | torikoshia | 2024-01-19 08:41:45 | Re: Parent/child context relation in pg_get_backend_memory_contexts() |
Previous Message | Andrey Borodin | 2024-01-19 08:25:51 | Re: UUID v7 |