mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Reorganize FAQ entry on performance.
This commit is contained in:
parent
7069a885af
commit
1f7aa643b6
56
doc/FAQ
56
doc/FAQ
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Frequently Asked Questions (FAQ) for PostgreSQL
|
Frequently Asked Questions (FAQ) for PostgreSQL
|
||||||
|
|
||||||
Last updated: Sun Jan 30 21:44:35 EST 2005
|
Last updated: Mon Jan 31 15:40:24 EST 2005
|
||||||
|
|
||||||
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
||||||
|
|
||||||
@ -346,40 +346,40 @@
|
|||||||
By default, PostgreSQL only allows connections from the local machine
|
By default, PostgreSQL only allows connections from the local machine
|
||||||
using Unix domain sockets or TCP/IP connections. Other machines will
|
using Unix domain sockets or TCP/IP connections. Other machines will
|
||||||
not be able to connect unless you modify listen_addresses in the
|
not be able to connect unless you modify listen_addresses in the
|
||||||
postgresql.conf and enable host-based authentication by modifying the
|
postgresql.conf file, enable host-based authentication by modifying
|
||||||
file $PGDATA/pg_hba.conf accordingly.
|
the $PGDATA/pg_hba.conf file, and restart the server.
|
||||||
|
|
||||||
3.3) How do I tune the database engine for better performance?
|
3.3) How do I tune the database engine for better performance?
|
||||||
|
|
||||||
Certainly, indexes can speed up queries. The EXPLAIN ANALYZE command
|
There are three major areas for potential performance improvement:
|
||||||
allows you to see how PostgreSQL is interpreting your query, and which
|
|
||||||
indexes are being used.
|
|
||||||
|
|
||||||
If you are doing many INSERTs, consider doing them in a large batch
|
Query Changes
|
||||||
using the COPY command. This is much faster than individual INSERTS.
|
This involves modifying queries to obtain better performance:
|
||||||
Second, statements not in a BEGIN WORK/COMMIT transaction block are
|
|
||||||
considered to be in their own transaction. Consider performing several
|
|
||||||
statements in a single transaction block. This reduces the transaction
|
|
||||||
overhead. Also, consider dropping and recreating indexes when making
|
|
||||||
large data changes.
|
|
||||||
|
|
||||||
There are several tuning options in the Administration Guide/Server
|
+ Creation of indexes, including expression and partial indexes
|
||||||
Run-time Environment/Run-time Configuration. You can disable fsync()
|
+ Use of COPY instead of multiple INSERTs
|
||||||
by using fsync option. This will prevent fsync()s from flushing to
|
+ Grouping of multiple statements into a single transaction to
|
||||||
disk after every transaction.
|
reduce commit overhead
|
||||||
|
+ Use of CLUSTER when retrieving many rows from an index
|
||||||
|
+ Use of LIMIT for returning a subset of a query's output
|
||||||
|
+ Use of Prepared queries
|
||||||
|
+ Use of ANALYZE to maintain accurate optimizer statistics
|
||||||
|
+ Regular use of VACUUM or pg_autovacuum
|
||||||
|
+ Dropping of indexes during large data changes
|
||||||
|
|
||||||
You can use the shared_buffers option to increase the number of shared
|
Server Configuration
|
||||||
memory buffers used by the backend processes. If you make this
|
A number of postgresql.conf settings affect performance. For
|
||||||
parameter too high, the postmaster may not start because you have
|
more details, see Administration Guide/Server Run-time
|
||||||
exceeded your kernel's limit on shared memory space. Each buffer is 8K
|
Environment/Run-time Configuration for a full listing, and for
|
||||||
and the default is 1000 buffers.
|
commentary see
|
||||||
|
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
|
||||||
|
nf_e.html and
|
||||||
|
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
|
||||||
|
|
||||||
You can also use the sort_mem (from PostgreSQL 8.0: work_mem) options
|
Hardware Selection
|
||||||
to increase the maximum amount of memory used by the backend processes
|
The effect of hardware on performance is detailed in
|
||||||
for each temporary sort. The default is 1024 (i.e. 1MB).
|
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
|
||||||
|
x.html.
|
||||||
You can also use the CLUSTER command to group data in tables to match
|
|
||||||
an index. See the CLUSTER manual page for more details.
|
|
||||||
|
|
||||||
3.4) What debugging features are available?
|
3.4) What debugging features are available?
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
alink="#0000ff">
|
alink="#0000ff">
|
||||||
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
|
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
|
||||||
|
|
||||||
<P>Last updated: Sun Jan 30 21:44:35 EST 2005</P>
|
<P>Last updated: Mon Jan 31 15:40:24 EST 2005</P>
|
||||||
|
|
||||||
<P>Current maintainer: Bruce Momjian (<A href=
|
<P>Current maintainer: Bruce Momjian (<A href=
|
||||||
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)
|
||||||
@ -428,8 +428,8 @@
|
|||||||
RHDB Admin (<a
|
RHDB Admin (<a
|
||||||
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhd
|
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhd
|
||||||
b/ </a>), TORA (<a
|
b/ </a>), TORA (<a
|
||||||
href="http://www.globecom.net/tora/">http://www.globecom.net/tora/</
|
href="http://www.globecom.net/tora/">http://www.globecom.net/tora/</a>,
|
||||||
a>, partly commercial), and Rekall (<a
|
partly commercial), and Rekall (<a
|
||||||
href="http://www.rekallrevealed.org/">
|
href="http://www.rekallrevealed.org/">
|
||||||
http://www.rekallrevealed.org/</a>). There is also PhpPgAdmin (<a
|
http://www.rekallrevealed.org/</a>). There is also PhpPgAdmin (<a
|
||||||
href="http://phppgadmin.sourceforge.net/">
|
href="http://phppgadmin.sourceforge.net/">
|
||||||
@ -457,48 +457,64 @@
|
|||||||
<P>By default, PostgreSQL only allows connections from the local
|
<P>By default, PostgreSQL only allows connections from the local
|
||||||
machine using Unix domain sockets or TCP/IP connections. Other
|
machine using Unix domain sockets or TCP/IP connections. Other
|
||||||
machines will not be able to connect unless you modify
|
machines will not be able to connect unless you modify
|
||||||
listen_addresses in the postgresql.conf <B>and</B> enable
|
<I>listen_addresses</I> in the <I>postgresql.conf</I> file, enable
|
||||||
host-based authentication by modifying the file
|
host-based authentication by modifying the
|
||||||
<I>$PGDATA/pg_hba.conf</I> accordingly.</P>
|
<I>$PGDATA/pg_hba.conf</I> file, and restart the server.</P>
|
||||||
|
|
||||||
<H4><A name="3.3">3.3</A>) How do I tune the database engine for
|
<H4><A name="3.3">3.3</A>) How do I tune the database engine for
|
||||||
better performance?</H4>
|
better performance?</H4>
|
||||||
|
|
||||||
<P>Certainly, indexes can speed up queries. The
|
<P>There are three major areas for potential performance
|
||||||
<SMALL>EXPLAIN ANALYZE</SMALL> command allows you to see how
|
improvement:</P>
|
||||||
PostgreSQL is interpreting your query, and which indexes are
|
|
||||||
being used.</P>
|
|
||||||
|
|
||||||
<P>If you are doing many <SMALL>INSERTs</SMALL>, consider doing
|
<DL>
|
||||||
them in a large batch using the <SMALL>COPY</SMALL> command. This
|
<DT><B>Query Changes</B></DT>
|
||||||
is much faster than individual <SMALL>INSERTS</SMALL>. Second,
|
|
||||||
statements not in a <SMALL>BEGIN WORK/COMMIT</SMALL> transaction
|
|
||||||
block are considered to be in their own transaction. Consider
|
|
||||||
performing several statements in a single transaction block. This
|
|
||||||
reduces the transaction overhead. Also, consider dropping and
|
|
||||||
recreating indexes when making large data changes.</P>
|
|
||||||
|
|
||||||
<P>There are several tuning options in the <a href=
|
<DD>This involves modifying queries to obtain better
|
||||||
|
performance:
|
||||||
|
<ul>
|
||||||
|
<li>Creation of indexes, including expression and partial
|
||||||
|
indexes</li>
|
||||||
|
<li>Use of COPY instead of multiple <SMALL>INSERT</SMALL>s</li>
|
||||||
|
<li>Grouping of multiple statements into a single transaction to
|
||||||
|
reduce commit overhead</li>
|
||||||
|
<li>Use of <SMALL>CLUSTER</SMALL> when retrieving many rows from an
|
||||||
|
index</li>
|
||||||
|
<li>Use of <SMALL>LIMIT</SMALL> for returning a subset of a query's
|
||||||
|
output</li>
|
||||||
|
<li>Use of Prepared queries</li>
|
||||||
|
<li>Use of <SMALL>ANALYZE</SMALL> to maintain accurate optimizer
|
||||||
|
statistics</li>
|
||||||
|
<li>Regular use of <SMALL>VACUUM</SMALL> or <I>pg_autovacuum</I>
|
||||||
|
<li>Dropping of indexes during large data changes</li>
|
||||||
|
</ul><BR>
|
||||||
|
<BR>
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><B>Server Configuration</B></DT>
|
||||||
|
|
||||||
|
<DD>A number of <I>postgresql.conf</I> settings affect performance.
|
||||||
|
For more details, see <a href=
|
||||||
"http://www.postgresql.org/docs/current/static/runtime.html">
|
"http://www.postgresql.org/docs/current/static/runtime.html">
|
||||||
Administration Guide/Server Run-time Environment/Run-time Configuration</a>.
|
Administration Guide/Server Run-time Environment/Run-time
|
||||||
You can disable <I>fsync()</I> by using <i>fsync</I> option. This will
|
Configuration</a> for a full listing, and for commentary see <a
|
||||||
prevent <I>fsync()</I>s from flushing to disk after every
|
href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">
|
||||||
transaction.</P>
|
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</a>
|
||||||
|
and <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">
|
||||||
|
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>.
|
||||||
|
<BR>
|
||||||
|
<BR>
|
||||||
|
</DD>
|
||||||
|
|
||||||
<P>You can use the <I>shared_buffers</I> option to
|
<DT><B>Hardware Selection</B></DT>
|
||||||
increase the number of shared memory buffers used by the backend
|
|
||||||
processes. If you make this parameter too high, the
|
|
||||||
<I>postmaster</I> may not start because you have exceeded your
|
|
||||||
kernel's limit on shared memory space. Each buffer is 8K and the
|
|
||||||
default is 1000 buffers.</P>
|
|
||||||
|
|
||||||
<P>You can also use the <I>sort_mem</I> (from PostgreSQL 8.0: <I>work_mem</I>)
|
<DD>The effect of hardware on performance is detailed in <a
|
||||||
options to increase the maximum amount of memory used by the backend
|
href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">
|
||||||
processes for each temporary sort. The default is 1024 (i.e. 1MB).</P>
|
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a>.
|
||||||
|
<BR>
|
||||||
<P>You can also use the <SMALL>CLUSTER</SMALL> command to group
|
<BR>
|
||||||
data in tables to match an index. See the <SMALL>CLUSTER</SMALL>
|
</DD>
|
||||||
manual page for more details.</P>
|
</DL>
|
||||||
|
|
||||||
<H4><A name="3.4">3.4</A>) What debugging features are
|
<H4><A name="3.4">3.4</A>) What debugging features are
|
||||||
available?</H4>
|
available?</H4>
|
||||||
@ -1196,5 +1212,3 @@ BYTEA bytea variable-length byte array (null-byte safe)
|
|||||||
compiler compute the dependencies automatically.</P>
|
compiler compute the dependencies automatically.</P>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|
||||||
|