mirror of https://github.com/postgres/postgres
parent
045573983a
commit
99281cf881
@ -0,0 +1,75 @@ |
||||
<chapter> |
||||
<title>Populating a Database</title> |
||||
|
||||
<note> |
||||
<title>Author</title> |
||||
<para> |
||||
Written by Tom Lane, from an e-mail message dated 1999-12-05. |
||||
</para> |
||||
</note> |
||||
|
||||
<para> |
||||
One may need to do a large number of table insertions when first |
||||
populating a database. Here are some tips and techniques for making that as |
||||
efficient as possible. |
||||
</para> |
||||
|
||||
<sect1> |
||||
<title>Disable Auto-commit</title> |
||||
|
||||
<para> |
||||
Turn off auto-commit and just do one commit at |
||||
the end. Otherwise <productname>Postgres</productname> is doing a |
||||
lot of work for each record |
||||
added. In general when you are doing bulk inserts, you want |
||||
to turn off some of the database features to gain speed. |
||||
</para> |
||||
</sect1> |
||||
|
||||
<sect1> |
||||
<title>Use COPY FROM</title> |
||||
|
||||
<para> |
||||
Use <command>COPY FROM STDIN</command> to load all the records in one |
||||
command, instead |
||||
of a series of INSERT commands. This reduces parsing, planning, etc |
||||
overhead a great deal. If you do this then it's not necessary to fool |
||||
around with autocommit. |
||||
</para> |
||||
</sect1> |
||||
|
||||
<sect1> |
||||
<title>Remove Indices</title> |
||||
|
||||
<para> |
||||
If you are loading a freshly created table, the fastest way is to |
||||
create the table, bulk-load with COPY, then create any indexes needed |
||||
for the table. Creating an index on pre-existing data is quicker than |
||||
updating it incrementally as each record is loaded. |
||||
</para> |
||||
|
||||
<para> |
||||
If you are augmenting an existing table, you can <command>DROP |
||||
INDEX</command>, load the table, then recreate the index. Of |
||||
course, the database performance for other users may be adversely |
||||
affected during the time that the index is missing. |
||||
</para> |
||||
</sect1> |
||||
</chapter> |
||||
|
||||
<!-- Keep this comment at the end of the file |
||||
Local variables: |
||||
mode:sgml |
||||
sgml-omittag:nil |
||||
sgml-shorttag:t |
||||
sgml-minimize-attributes:nil |
||||
sgml-always-quote-attributes:t |
||||
sgml-indent-step:1 |
||||
sgml-indent-data:t |
||||
sgml-parent-document:nil |
||||
sgml-default-dtd-file:"./reference.ced" |
||||
sgml-exposed-tags:nil |
||||
sgml-local-catalogs:("/usr/lib/sgml/CATALOG") |
||||
sgml-local-ecat-files:nil |
||||
End: |
||||
--> |
||||
Loading…
Reference in new issue