[pgsql-jp: 40521] Re: UPDATEエラー後の処理時間増加について

Itagaki Takahiro itagaki.takahiro @ gmail.com
2010年 11月 9日 (火) 13:42:48 JST


2010/11/9  <munekatsu.tomori @ isd.co.jp>:
> TRUNCATE/INSERT対象のテーブルとUPDATE対象のテーブルは別テーブルとなっています。
> UPDATEエラー後、再度処理を実行したときにINSERT処理が遅くなるのとは何か関係があるのでしょうか?

UPDATEは別テーブルなのですね。勘違いしていました。

INSERT 対象のテーブルの論理的な構造は、TRUNCATE でリセットされるので
毎回元に戻るはずです。そのテーブル上の主キーも同様リセットされます。
もし性能差があるとすれば、UPDATE対象のテーブルを含む、他のテーブルの
影響と思われます。

> 「postgresql.conf」は、デフォルトのままです。

さすがにデフォルトのままだと共有メモリやWALセグメント数が少なすぎて、
他のデータの影響を受けやすいのかもしれません。ファイルシステムの
断片化も可能性としてはありますが、Linux であれば影響は小さいはず…。

挙動の解析は意外に面倒だと思うので、先にざっくりとチューニングして
みてはいかがでしょうか。主キーもロード前にいったん DROP したほうが
性能が安定します。以前記事を書きましたので、参考までに。
http://lets.postgresql.jp/documents/technical/bulkload/

-- 
Itagaki Takahiro


pgsql-jp メーリングリストの案内