Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

storage

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Tom Lane authored
    buffers, rather than blowing out the whole shared-buffer arena.  Aside from
    avoiding cache spoliation, this fixes the problem that VACUUM formerly tended
    to cause a WAL flush for every page it modified, because we had it hacked to
    use only a single buffer.  Those flushes will now occur only once per
    ring-ful.  The exact ring size, and the threshold for seqscans to switch into
    the ring usage pattern, remain under debate; but the infrastructure seems
    done.  The key bit of infrastructure is a new optional BufferAccessStrategy
    object that can be passed to ReadBuffer operations; this replaces the former
    StrategyHintVacuum API.
    
    This patch also changes the buffer usage-count methodology a bit: we now
    advance usage_count when first pinning a buffer, rather than when last
    unpinning it.  To preserve the behavior that a buffer's lifetime starts to
    decrease when it's released, the clock sweep code is modified to not decrement
    usage_count of pinned buffers.
    
    Work not done in this commit: teach GiST and GIN indexes to use the vacuum
    BufferAccessStrategy for vacuum-driven fetches.
    
    Original patch by Simon, reworked by Heikki and again by Tom.
    d526575f
    History
    Name Last commit Last update
    ..