diff options
author | Robert Haas <rhaas@postgresql.org> | 2013-12-20 08:08:01 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2013-12-20 08:14:13 -0500 |
commit | c32afe53c2e87a56e2ff930798a5588db0f7a516 (patch) | |
tree | fdbf5d63965b208e03683eb8dddf652992410d40 /doc/src | |
parent | 6eda3e9c27781dec369542a9b20cba7c3d832a5e (diff) | |
download | postgresql-c32afe53c2e87a56e2ff930798a5588db0f7a516.tar.gz postgresql-c32afe53c2e87a56e2ff930798a5588db0f7a516.zip |
pg_prewarm, a contrib module for prewarming relationd data.
Patch by me. Review by Álvaro Herrera, Amit Kapila, Jeff Janes,
Gurjeet Singh, and others.
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/contrib.sgml | 1 | ||||
-rw-r--r-- | doc/src/sgml/filelist.sgml | 1 | ||||
-rw-r--r-- | doc/src/sgml/pgprewarm.sgml | 68 |
3 files changed, 70 insertions, 0 deletions
diff --git a/doc/src/sgml/contrib.sgml b/doc/src/sgml/contrib.sgml index dd8e09ed291..2892fa11670 100644 --- a/doc/src/sgml/contrib.sgml +++ b/doc/src/sgml/contrib.sgml @@ -128,6 +128,7 @@ CREATE EXTENSION <replaceable>module_name</> FROM unpackaged; &pgbuffercache; &pgcrypto; &pgfreespacemap; + &pgprewarm; &pgrowlocks; &pgstatstatements; &pgstattuple; diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index d1b7dc67811..552c3aab2d7 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -126,6 +126,7 @@ <!ENTITY pgbuffercache SYSTEM "pgbuffercache.sgml"> <!ENTITY pgcrypto SYSTEM "pgcrypto.sgml"> <!ENTITY pgfreespacemap SYSTEM "pgfreespacemap.sgml"> +<!ENTITY pgprewarm SYSTEM "pgprewarm.sgml"> <!ENTITY pgrowlocks SYSTEM "pgrowlocks.sgml"> <!ENTITY pgstandby SYSTEM "pgstandby.sgml"> <!ENTITY pgstatstatements SYSTEM "pgstatstatements.sgml"> diff --git a/doc/src/sgml/pgprewarm.sgml b/doc/src/sgml/pgprewarm.sgml new file mode 100644 index 00000000000..2200d3df655 --- /dev/null +++ b/doc/src/sgml/pgprewarm.sgml @@ -0,0 +1,68 @@ +<!-- doc/src/sgml/pgprewarm.sgml --> + +<sect1 id="pgprewarm" xreflabel="pg_prewarm"> + <title>pg_prewarm</title> + + <indexterm zone="pgprewarm"> + <primary>pg_prewarm</primary> + </indexterm> + + <para> + The <filename>pg_prewarm</filename> module provides a convenient way + to load relation data into either the operating system buffer cache + or the <productname>PostgreSQL</productname> buffer cache. + </para> + + <sect2> + <title>Functions</title> + +<synopsis> +pg_prewarm(regclass, mode text default 'buffer', fork text default 'main', + first_block int8 default null, + last_block int8 default null) RETURNS int8 +</synopsis> + + <para> + The first argument is the relation to be prewarmed. The second argument + is the prewarming method to be used, as further discussed below; the third + is the relation fork to be prewarmed, usually <literal>main</literal>. + The fourth argument is the first block number to prewarm + (<literal>NULL</literal> is accepted as a synonym for zero). The fifth + argument is the last block number to prewarm (<literal>NULL</literal> + means 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 — by the OS when using <literal>prefetch</literal> or + <literal>read</literal>, or by <productname>PostgreSQL</productname> when + using <literal>buffer</literal> — 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 + for 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> + </sect2> + + <sect2> + <title>Author</title> + + <para> + Robert Haas <email>rhaas@postgresql.org</email> + </para> + </sect2> + +</sect1> |