Home Explore Blog CI



postgresql

2nd chunk of `doc/src/sgml/pgprewarm.sgml`
2fe99738dc89e963b41e55d228ca152f9c92cc3ecf46b2b00000000100000e47
 prewarm through the last block in the relation).  The return value
   is the number of blocks prewarmed.
  </para>

  <para>
   There are three available prewarming methods.  <literal>prefetch</literal>
   issues asynchronous prefetch requests to the operating system, if this is
   supported, or throws an error otherwise.  <literal>read</literal> reads
   the requested range of blocks; unlike <literal>prefetch</literal>, this is
   synchronous and supported on all platforms and builds, but may be slower.
   <literal>buffer</literal> reads the requested range of blocks into the
   database buffer cache.
  </para>

  <para>
   Note that with any of these methods, attempting to prewarm more blocks than
   can be cached &mdash; by the OS when using <literal>prefetch</literal> or
   <literal>read</literal>, or by <productname>PostgreSQL</productname> when
   using <literal>buffer</literal> &mdash; will likely result in lower-numbered
   blocks being evicted as higher numbered blocks are read in.  Prewarmed data
   also enjoys no special protection from cache evictions, so it is possible
   that other system activity may evict the newly prewarmed blocks shortly
   after they are read; conversely, prewarming may also evict other data from
   cache. For these reasons, prewarming is typically most useful at startup,
   when caches are largely empty.
  </para>

<synopsis>
autoprewarm_start_worker() RETURNS void
</synopsis>

  <para>
   Launch the main autoprewarm worker.  This will normally happen
   automatically, but is useful if automatic prewarm was not configured at
   server startup time and you wish to start up the worker at a later time.
  </para>

<synopsis>
autoprewarm_dump_now() RETURNS int8
</synopsis>

  <para>
   Update <filename>autoprewarm.blocks</filename> immediately.  This may be useful
   if the autoprewarm worker is not running but you anticipate running it
   after the next restart.  The return value is the number of records written
   to <filename>autoprewarm.blocks</filename>.
  </para>
 </sect2>

 <sect2 id="pgprewarm-config-params">
  <title>Configuration Parameters</title>

 <variablelist>
   <varlistentry>
    <term>
     <varname>pg_prewarm.autoprewarm</varname> (<type>boolean</type>)
     <indexterm>
      <primary><varname>pg_prewarm.autoprewarm</varname> configuration parameter</primary>
     </indexterm>
    </term>
    <listitem>
     <para>
      Controls whether the server should run the autoprewarm worker. This is
      on by default. This parameter can only be set at server start.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>

  <variablelist>
   <varlistentry>
   <term>
     <varname>pg_prewarm.autoprewarm_interval</varname> (<type>integer</type>)
     <indexterm>
      <primary><varname>pg_prewarm.autoprewarm_interval</varname> configuration parameter</primary>
     </indexterm>
    </term>
    <listitem>
     <para>
      This is the interval between updates to <literal>autoprewarm.blocks</literal>.
      The default is 300 seconds. If set to 0, the file will not be
      dumped at regular intervals, but only when the server is shut down.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
  <para>
   These parameters must be set in <filename>postgresql.conf</filename>.
   Typical usage might be:
  </para>

<programlisting>
# postgresql.conf
shared_preload_libraries = 'pg_prewarm'

pg_prewarm.autoprewarm = true
pg_prewarm.autoprewarm_interval = 300s

</programlisting>

 </sect2>

 <sect2 id="pgprewarm-author">
  <title>Author</title>

  <para>
   Robert Haas <email>rhaas@postgresql.org</email>
  </para>
 </sect2>

</sect1>

Title: pg_prewarm: Functions, Configuration, and Author
Summary
Continuing from the previous section, this section discusses that prewarming may evict other data from cache and is most useful at startup. It also introduces functions autoprewarm_start_worker() to launch the main autoprewarm worker, and autoprewarm_dump_now() to immediately update autoprewarm.blocks. Configuration parameters pg_prewarm.autoprewarm (controls running the autoprewarm worker) and pg_prewarm.autoprewarm_interval (interval between updates to autoprewarm.blocks) are described. The section concludes by crediting Robert Haas as the author.