11.3. データベースへのデータ投入

まずデータベースにデータを初期導入するために、大量のデータ登録を行 う必要がままあります。ここでは、そうしたことを効率よく行うためのちょっ としたヒントとテクニックを紹介します。

11.3.1. Auto-commitをオフにする

auto-commitをオフにし、最後に一回だけコミットします。そうしないと、 Postgresはレコードを追加するたびに多く の仕事をしなければなりません。一般的に言って、大量のデータ登録をす るためには、データベースの機能の一部をオフにしておく必要があります。

11.3.2. COPY FROMを使う

1個のコマンドですべてのデータをすべてのデータをロードするために一 連のINSERTコマンドではなく、COPY FROM STDINを使 いましょう。こうすればパーサやプランナそのほかのオーバーへッドを減 らすことができます。いずれにしてもこの方法では、コマンドは1個なの で、autocommit をあれこれする必要はありません。

11.3.3. インデックスは削除しておく

新規のテーブルにデータをロードするのなら、一番早い方法は、テーブル を作ってCOPYでデータを一括ロードし、それから必要に応じてインデック スを作ることです。データをロードしながら徐々にインデックスを更新す るよりも既存のデータからインデックスを作る方が高速です。

既存のテーブルにデータを追加する場合は、DROP INDEXしてからデータをテーブルにロードし、インデックスを 再作成します。もちろんインデックスが消失している間はデータベースの 性能が影響を受けるかも知れません。