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

munekatsu.tomori @ isd.co.jp munekatsu.tomori @ isd.co.jp
2010年 11月 8日 (月) 19:37:07 JST


お世話になっております、友利と申します。

Postgresql8.3を使用してINSERT/UPDATEを行っています。
INSERT対象テーブルは、一度トランケートしINSERTを行っています。
INSERT終了後に別のテーブルに対して、データが存在した場合
UPDATEを行っています。
 
当初処理時間が1時間程度だったものが、一度UPDATEでエラーとなった後で、
再度処理を実行するとINSERT処理で処理時間が20分ほど長くなってしまい、
その後実行するたびに処理時間が数分延びていく現象が発生しています。
処理時間が延びている間は、UPDATEはエラーのままです。
UPDATEのエラーを解消すると、処理時間が短くならず、
その時点の処理時間のまま変わらず実行されています。
→下記時間推移を参照。
 ・6/29 : 1時間程度で「xx処理」終了
 ・6/30 : 「xx処理」でUPDATEエラーが発生し異常終了。
       →UPDATEエラーの原因は、「xx処理」のバグによるもの。
 ・7/1  : 「xx処理」内にあるINSERT処理で、6/29に比べて20分ほど
       長くなっている。「xx処理」はUPDATEエラーが発生し異常終了。
 ・7/2〜8/31:「xx処理」はUPDATEエラーが発生している状態が続く。
        6/29と比較すると、8/31のINSERT処理が約3倍ほどの処理時間を
        費やしている。
 ・9/1 :「xx処理」のUPDATEエラーに関するプログラム改修を行なう。
     その後、当該処理を実行したが、INSERTの処理時間は8/31と同値であった。
 ・9/2以降:「xx処理」のUPDATEエラーは発生していないが、INSERTの
       処理時間は8/31と同値であった。
 
なぜUPDATEエラー後に処理時間が延びているのか原因がわからず、
調査が手詰まりの状態です。
どのような調査を実施したら、原因の特定ができるのでしょうか?
また、UPDATEエラーが起きる前の処理時間に戻すには、
どのような対応を行えばよいのか、ご教授いただけないでしょうか?
 
動作環境
 Postgresql8.3.9
 CentOS 5.3
 メモリ:2G
 JAVA
 
宜しくお願いします。


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