Use COPY FROM STDIN to load all the rows in one
- command, instead of using
- a series of INSERT commands. This reduces parsing,
- planning, etc.
- overhead a great deal. If you do this then it is not necessary to turn
- off autocommit, since it is only one command anyway.
+ command, instead of using a series of INSERT
+ commands. This reduces parsing, planning, etc. overhead a great
+ deal. If you do this then it is not necessary to turn off
+ autocommit, since it is only one command anyway.
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
+ create the table, bulk load the table's data using
+ COPY, then create any indexes needed for the
+ table. Creating an index on pre-existing data is quicker than
updating it incrementally as each row is loaded.
+
+
Increase sort_mem
+
+ Temporarily increasing the sort_mem
+ configuration variable when restoring large amounts of data can
+ lead to improved performance. This is because when a B-tree index
+ is created from scratch, the existing content of the table needs
+ to be sorted. Allowing the merge sort to use more buffer pages
+ means that fewer merge passes will be required.
+
+
+
Run ANALYZE Afterwards
by ORDER BY>, merge joins, and CREATE INDEX>.
Hash tables are used in hash joins, hash-based aggregation, and
hash-based processing of IN> subqueries. Because
- CREATE INDEX> is used when restoring a database, it might
- be good to temporarily increase this value during a restore.
+ CREATE INDEX> is used when restoring a database,
+ increasing sort_mem before doing a large
+ restore operation can improve performance.