From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | free space map and visibility map |
Date: | 2017-03-17 18:37:50 |
Message-ID: | CAMkU=1wXkKUKBHWBYzET3D9OViyDg8DcVL-wKEqk2uyoMrzr_A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
With some intensive crash-recovery testing, I've run into a situation where
I get some bad table bloat. There will be large swaths of the table which
are empty (all results from heap_page_items other than lp are either zero
or NULL), but have zero available space in the fsm, and are marked as
all-visible and all-frozen in the vm.
I guess it is a result of a crash causing updates to the fsm to be lost.
Then due to the (crash-recovered) visibility map showing them as all
visible and all frozen, vacuum never touches the pages again, so the fsm
never gets corrected.
'VACUUM (DISABLE_PAGE_SKIPPING) foo;' does fix it, but that seems to be
the only thing that will.
Is there a way to improve this, short of making updates to the fsm be a
wal-logged operation?
It is probably not a very pressing issue, as crashes are normally pretty
rare, I would hope. But it seems worth improving if there is a good way to
do so.
Cheers,
Jeff
From | Date | Subject | |
---|---|---|---|
Next Message | Ashutosh Sharma | 2017-03-17 18:42:00 | Re: pageinspect and hash indexes |
Previous Message | Robert Haas | 2017-03-17 18:24:14 | Re: <> join selectivity estimate question |