Re: Extended Prefetching using Asynchronous IO - proposal and patch
От | Claudio Freire |
---|---|
Тема | Re: Extended Prefetching using Asynchronous IO - proposal and patch |
Дата | |
Msg-id | CAGTBQpbtmZGo+vGNQcj+mqbDYSR==t6nNuQVkZO6cMC2BhM-=Q@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Extended Prefetching using Asynchronous IO - proposal and patch (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
On Thu, May 29, 2014 at 6:56 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Claudio Freire <klaussfreire@gmail.com> writes: >> On Thu, May 29, 2014 at 6:43 PM, Claudio Freire <klaussfreire@gmail.com> wrote: >>> On Thu, May 29, 2014 at 6:19 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>>> "ampeeknexttuple"? That's a bit scary. It would certainly be unsafe >>>> for non-MVCC snapshots (read about vacuum vs indexscan interlocks in >>>> nbtree/README). > >>> It's not really the tuple, just the tid > >> And, furthermore, it's used only to do prefetching, so even if the tid >> was invalid when the tuple needs to be accessed, it wouldn't matter, >> because the indexam wouldn't use the result of ampeeknexttuple to do >> anything at that time. > > Nonetheless, getting the next tid out of the index may involve stepping > to the next index page, at which point you've lost your interlock > guaranteeing that the *previous* tid will still mean something by the time No, no... that's exactly why a new regproc is needed, because for prefetching, we need to get the next tid that satisfies some conditions *without* walking the index. This, in nbtree, only looks through the tid array to find the suitable tid, or just return false if the array is exhausted. > Having said that, it's probably OK as long as this mode is only invoked > for user queries (with MVCC snapshots) and not for system indexscans. I think system index scans will also invoke this. There's no rule excluding that possibility.
В списке pgsql-hackers по дате отправления: