Re: index prefetching
От | Tomas Vondra |
---|---|
Тема | Re: index prefetching |
Дата | |
Msg-id | 777e981c-bf0c-4eb9-a9e0-42d677e94327@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: index prefetching (Konstantin Knizhnik <knizhnik@garret.ru>) |
Ответы |
Re: index prefetching
Re: index prefetching |
Список | pgsql-hackers |
On 1/22/24 07:35, Konstantin Knizhnik wrote: > > On 22/01/2024 1:47 am, Tomas Vondra wrote: >> h, right. Well, you're right in this case we perhaps could set just one >> of those flags, but the "purpose" of the two places is quite different. >> >> The "prefetch" flag is fully controlled by the prefetcher, and it's up >> to it to change it (e.g. I can easily imagine some new logic touching >> setting it to "false" for some reason). >> >> The "data" flag is fully controlled by the custom callbacks, so whatever >> the callback stores, will be there. >> >> I don't think it's worth simplifying this. In particular, I don't think >> the callback can assume it can rely on the "prefetch" flag. >> > Why not to add "all_visible" flag to IndexPrefetchEntry ? If will not > cause any extra space overhead (because of alignment), but allows to > avoid dynamic memory allocation (not sure if it is critical, but nice to > avoid if possible). > Because it's specific to index-only scans, while IndexPrefetchEntry is a generic thing, for all places. However: (1) Melanie actually presented a very different way to implement this, relying on the StreamingRead API. So chances are this struct won't actually be used. (2) After going through Melanie's patch, I realized this is actually broken. The IOS case needs to keep more stuff, not just the all-visible flag, but also the index tuple. Otherwise it'll just operate on the last tuple read from the index, which happens to be in xs_ituple. Attached is a patch with a trivial fix. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Вложения
В списке pgsql-hackers по дате отправления: