From 99281cf881f8c4e014c2a3aae92f0abb31a31d2f Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" <lockhart@fourpalms.org> Date: Thu, 30 Mar 2000 22:17:50 +0000 Subject: [PATCH] Hints on how to fill a database. --- doc/src/sgml/populate.sgml | 75 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 doc/src/sgml/populate.sgml diff --git a/doc/src/sgml/populate.sgml b/doc/src/sgml/populate.sgml new file mode 100644 index 00000000000..e902c627988 --- /dev/null +++ b/doc/src/sgml/populate.sgml @@ -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: +--> -- GitLab