Re: HOT patch - version 15
От | Gregory Stark |
---|---|
Тема | Re: HOT patch - version 15 |
Дата | |
Msg-id | 87odgamm7n.fsf@oxford.xeocode.com обсуждение исходный текст |
Ответ на | Re: HOT patch - version 15 (Bruce Momjian <bruce@momjian.us>) |
Ответы |
Re: HOT patch - version 15
|
Список | pgsql-patches |
"Bruce Momjian" <bruce@momjian.us> writes: > Looking at the patch I see: > > + /* > + * Mark the page as clear of prunable tuples. If we find a tuple which > + * may become prunable, we shall set the hint again. > + */ > + PageClearPrunable(page); > > I like the idea of the page hint bit, but my question is if there is a > long-running transaction, isn't each SELECT going to try to defragment a > page over and over again because there is still something prunable on > the page? Well it'll try to prune the chains over and over again. If it doesn't find anything it won't defragment, but yes. I think we could tackle that by storing on the page the oldest xmax which would allow us to prune a tuple. Then you could compare RecentGlobalXmin against that and not bother looking at any other chains if it hasn't been passed yet. It would be hard to do that with single-chain pruning though, once you the limiting tuple you would then wouldn't know what the next limiting xmax is until the next time you do a full-page prune. Still that gets us down to at most two full-page prunes per update instead of a potentially unbounded number of prunes. This seems like a further optimization to think about after we have a place to trigger the pruning where it'll do the most good. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com
В списке pgsql-patches по дате отправления: