Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access)
От | Melanie Plageman |
---|---|
Тема | Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) |
Дата | |
Msg-id | CAAKRu_bUrEsbBnE=zy36_UCmYMfzxsV=8Ff8+j79co4-W=ZogA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) (Kirill Reshke <reshkekirill@gmail.com>) |
Список | pgsql-hackers |
On Tue, Aug 26, 2025 at 4:01 PM Kirill Reshke <reshkekirill@gmail.com> wrote: > > Few comments on 0003. > > 1) This patch introduces XLHP_HAS_VMFLAGS. However it lacks some > helpful comments about this new status bit. I added the ones you suggested in my v7 posted here [1]. > 2) Should we move conflict_xid = visibility_cutoff_xid; assignment > just after heap_page_is_all_visible_except_lpdead call in > lazy_vacuum_heap_page? Why would we want to do that? We only want to set it if the page is all visible, so we would have to guard it similarly. > 3) Looking at this diff, do not comprehend one bit: how are we > protected from passing an all-visible page to lazy_vacuum_heap_page. I > did not manage to reproduce such behaviour though. > > + if ((vmflags & VISIBILITYMAP_VALID_BITS) != 0) > + { > + Assert(!PageIsAllVisible(page)); > + set_pd_all_vis = true; > + LockBuffer(vmbuffer, BUFFER_LOCK_EXCLUSIVE); > + PageSetAllVisible(page); > + visibilitymap_set_vmbyte(vacrel->rel, > + blkno, So, for one, there is an assert just above this code in lazy_vacuum_heap_page() that nunused > 0 -- so we know that the page couldn't have been all-visible already because it had unused line pointers. Otherwise, if it was possible for an already all-visible page to get here, the same thing would happen that happens on master -- heap_page_is_all_visible[_except_lpdead()] would return true and we would try to set the VM which would end up being a no-op. - Melanie [1] https://www.postgresql.org/message-id/CAAKRu_YD0ecXeAh%2BDmJpzQOJwcRzmMyGdcc5W_0pEF78rYSJkQ%40mail.gmail.com
В списке pgsql-hackers по дате отправления: