Re: Dead Space Map for vacuum - Mailing list pgsql-hackers

From Russell Smith
Subject Re: Dead Space Map for vacuum
Date
Msg-id 4595952D.3040106@pws.com.au
Whole thread Raw
In response to Re: Dead Space Map for vacuum  ("Simon Riggs" <simon@2ndquadrant.com>)
Responses Re: Dead Space Map for vacuum
List pgsql-hackers
Simon Riggs wrote: <blockquote cite="mid1167417263.3903.245.camel@silverbirch.site" type="cite"><pre wrap="">On Fri,
2006-12-29at 10:49 -0500, Tom Lane wrote: </pre><blockquote type="cite"><pre wrap="">"Simon Riggs" <a
class="moz-txt-link-rfc2396E"href="mailto:simon@2ndquadrant.com"><simon@2ndquadrant.com></a> writes:
</pre><blockquotetype="cite"><pre wrap="">I would suggest that we tracked whether a block has had 0, 1 or 1+
 
updates/deletes against it. When a block has 1+ it can then be
worthwhile to VACUUM it and to place it onto the FSM. Two dead tuples is
really the minimum space worth reclaiming on any block.     </pre></blockquote><pre wrap="">How do you arrive at that
conclusion?  </pre></blockquote><pre wrap="">
 
FSM code ignores any block with less space than 1 average tuple, which
is a pretty reasonable rule. </pre></blockquote> FSM serves a different purpose than DSM and therefore has an entirely
differentset of rules governing what it should and shouldn't be doing.  This is a reasonable rule for FSM, but not for
DSM.<br/><blockquote cite="mid1167417263.3903.245.camel@silverbirch.site" type="cite"><pre wrap="">
 
If you only track whether a block has been updated, not whether it has
been updated twice, then you will be VACUUMing lots of blocks that have
only a 50% chance of being usefully stored by the FSM. As I explained,
the extra bit per block is easily regained from storing less FSM data. </pre></blockquote> Well, it seems that when
implementingthe DSM, it'd be a great time to move FSM from it's current location in Shared Memory to somewhere else. 
Possiblythe same place as DSM.  A couple of special blocks per file segment would a good place.  Also I'm not sure that
thepoint of VACUUMing is always to be able be able to immediately reuse the space.  There are cases where large
DELETE'sare done, and you just want to decrease the index size.  In Tom's counter example of large tuples, you
certainlywant to vacuum the index when only a single update/delete occurs.<br /><blockquote
cite="mid1167417263.3903.245.camel@silverbirch.site"type="cite"><pre wrap="">
 
My understanding was that DSM was meant to increase VACUUM efficiency,
so having a way to focus in on blocks most worth vacuuming makes sense
using the 80/20 rule. </pre></blockquote> Possibly true.  I don't have anything to indicate what usage patterns produce
whatrequirements in vacuum patterns.  If there are significant numbers of blocks with one update, is it a loss to
actuallyvacuum those.  I know it could be faster if we didn't, but would it still be faster than what we do now.<br
/><blockquotecite="mid1167417263.3903.245.camel@silverbirch.site" type="cite"><pre wrap=""> </pre><blockquote
type="cite"><prewrap="">Counterexample: table in which all tuples exceed half a page.   </pre></blockquote><pre
wrap="">
Current FSM code will ignore those too, if they are less than the
average size of the tuple so far requested. Thats a pretty wierd
counterexample, even if it is a case that needs handling. </pre></blockquote> Again I'd be careful saying that FSM =
DSMfor handling of what should be done for a particular block.<br /><br /> Russell Smith.<br /><br /> 

pgsql-hackers by date:

Previous
From: "Simon Riggs"
Date:
Subject: Re: Dead Space Map for vacuum
Next
From: "Simon Riggs"
Date:
Subject: Re: Dead Space Map for vacuum