On Sat, Mar 18, 2017 at 2:09 PM, Masahiko Sawada <sawada.m...@gmail.com>
wrote:

> On Fri, Mar 17, 2017 at 9:37 PM, Jeff Janes <jeff.ja...@gmail.com> wrote:
> > 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.
>
> I guess that this happens only if heap_xlog_clean applies FPI. Right?
> Updating fsm can be lost but fsm is updated by replaying HEAP2_CLEAN
> record during crash recovery.
>

Isn't HEAP2_CLEAN only issued before an intended HOT update?  (Which then
can't leave the block as all visible or all frozen).  I think the issue is
here is HEAP2_VISIBLE or HEAP2_FREEZE_PAGE.  Am I reading this correctly,
that neither of those ever update the FSM, regardless of FPI?

I don't know how to test the issue of which record is most responsible.  I
could turn off FPW globally and see what happens, with some tweaking to my
testing harness.

Cheers,

Jeff

Reply via email to