[pgsql-jp: 39912] Re: 1 回目のUPDATEが異常に遅い

Shimada.Hirokazu @ toshiba-sol.co.jp Shimada.Hirokazu @ toshiba-sol.co.jp
2009年 7月 6日 (月) 09:35:49 JST


三谷様

いつもお世話になります。島田です。

本件、ずいぶん時間がかかってしましたが、原因判明しましたので
ご報告いたします。

原因は非常に単純でした。。
UPDATEを掛けていたテーブルにトリガーが実装されており、トリガー
実行先のテーブル約400万件のレコードに対して、UPDATEにて
SeqScanが実行されていたことが原因でした。
トリガー先のテーブルへのUPDATEは主キーを利用して検索をしてい
たのですが、
 [TIMESTAMP]=NOW()
と、NOW()を検索値として使用していたため、IndexScanにならなかっ
たようです。
 [TIMESTAMP]=TO_DATE(NOW(),'YYYY/MM/DD HH24:MI:SS')
とすることにより、解決できました(NOW()だとIndex利用されないんで
すね・・・)。

ちなみにSELECTやDELETEは十数ミリ秒で完了しておりました。。。

また、初回のUPDATEに時間が掛っていたのは、キャッシュ利用有無
でしょうか?
キャッシュ利用有無で約30倍くらいの性能差が出るのはおかしくはな
いとの回答をメーカからいただいてます。

よろしくお願いいたします。

以上

** 5月より電話番号が変わりました **
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/  東芝ソリューション(株) 
_/  製造産業ソリューション事業部 産業ソリューション第二部
_/  産業システム技術第三担当    略称:(製造ジ)[産2S](産S3)
_/    島田 洋一 
_/  E-Mail      : shimada.hirokazu @ toshiba-sol.co.jp 
_/  TEL(勤務先) : 042-340-6642  FAX(勤務先) : 042-340-6017 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

pgsql-jp-bounces @ ml.postgresql.jp wrote on 2009/06/12 09:26:32:

> 島田さん。
> 
> 最初のクエリーだけが遅くなるという話は
> Windows版のユーザから時々出る話ですので、
> 原因が分かれば(解決事例として)参考になる人が多いかもしれませんね。
> 
> 島田さんからの回答を期待しております :)
> 
> 三谷@広島
> 
> -- original message --
> From: <Shimada.Hirokazu @ toshiba-sol.co.jp>
> To: PostgreSQL Japanese Mailing List<pgsql-jp @ ml.postgresql.jp>
> Sent: Thu, 11 Jun 2009 18:18:49 +0900
> Subject: [pgsql-jp: 39888] Re:1 回目のUPDATEが異常に遅い
> 
> >三谷様
> >
> >たびたびのご回答大変助かります。
> >アドバイスいただいた通り問題箇所の切り分けから進めたいと思います。
> >
> >結果についてはご報告いたします。
> >
> >よろしくお願いいたします。
> >
> >以上
> >
> >pgsql-jp-bounces @ ml.postgresql.jp wrote on 2009/06/11 16:00:58:
> >
> >> 島田さん、こんにちは。
> >> 
> >> 1つしかないactual time が 0.000
> >> なのに
> >> Total runtime は 6766.000 ms
> >> ということですので、
> >> DB以外に問題があるように思います。
> >> 
> >> ハードディスクの問題なのか、他のアプリケーションの問題なのか、分かり
ませ
> >んが、
> >> 問題の切り分け作業をされるのが解決の近道だと思います。
> >> 
> >> 何か分かったら教えてくださいね。
> >> 
> >> 三谷@広島
> >> 
> >> -- original message --
> >> From: <Shimada.Hirokazu @ toshiba-sol.co.jp>
> >> To: PostgreSQL Japanese Mailing List<pgsql-jp @ ml.postgresql.jp>
> >> Sent: Thu, 11 Jun 2009 15:01:55 +0900
> >> Subject: [pgsql-jp: 39886] Re:1 回目のUPDATEが異常に遅い
> >> 
> >> >三谷様
> >> >
> >> >ご返信ありがとうございます。島田です。
> >> >
> >> >すみません、SELECT、DELETEの1秒というのは、感覚的な時間で実際には1秒
を
> >> >下回っているかもしれません。
> >> >
> >> >UPDATE文のEXPLAIN ANALYZEの結果は以下の通りです。
> >> >
> >> >Index Scan using card_mst_pk,card_mst_pk on card_mst 
(cost=0.00..12.01 
> >> >rows=2 width=119) (actual time = 0.000..0.000 rows = 2 loops = 1)
> >> > Index Cond: (((card_no)::text = '98003701'::text) OR 
((card_no)::text 
> >= 
> >> >'98003702'::text))
> >> >Total runtime: 6766.000 ms
> >> >
> >> >ハードウェア環境は、
> >> >
> >> >CPU:IntelXeon 2.6MGHz
> >> >メモリ:2Gbyte(DBの共有メモリは900Mbyte)
> >> >
> >> >です。
> >> >
> >> >ハードウェアの問題であれば、違うマシンにデータフォルダ以下を全てコピ
ー
> >して
> >> >試
> >> >すのがよいのでしょうか?
> >> >それで同様であれば、ハードウェア以外の問題、発生しないのであれば、ハ
ー
> >ドウ
> >> >ェアの問題という切り分けにはなりそうですか。
> >> >
> >> >本現象は、システム稼動当初から遅かったわけではなく、気づいたらいつの
間
> >にか
> >> >遅くなっていたという状況です。
> >> >
> >> >以上
> >> >
> >> >pgsql-jp-bounces @ ml.postgresql.jp wrote on 2009/06/11 13:50:46:
> >> >
> >> >> こんにちは。
> >> >> 
> >> >> 1件のUPDATEに90秒もかかるというのは論外として、
> >> >> 5000件程度のテーブルで、SELECTやDELETEに1秒もかかるというのは遅す
ぎま
> >す
> >> >ね。
> >> >> EXPLAIN ANALYZEを使って、実際にDBでの処理がどれくらいかかっている
の
> >> >> か調べた方がよいかもしれません。
> >> >> EXPLAINの使い方は以下のページを参照してください。
> >> >> http://www.postgresql.jp/document/pg837doc/html/sql-explain.html
> >> >> 
> >> >> それはともかく。
> >> >> ハードウェア環境はどうなっていますか?
> >> >> 
> >> >> 三谷@広島
> >> >> 
> >> >> -- original message --
> >> >> From: <Shimada.Hirokazu @ toshiba-sol.co.jp>
> >> >> To: <pgsql-jp @ ml.postgresql.jp>
> >> >> Sent: Thu, 11 Jun 2009 10:55:35 +0900
> >> >> Subject: [pgsql-jp: 39884]1回目のUPDATEが異常に遅い
> >> >> 
> >> >> >初めて投稿させていただきます。島田と申します。
> >> >> >
> >> >> >掲題の件、5000件程度のテーブルの1件のUPDATEに非常に時間が掛ってい
ま
> >す。
> >> >> >環境は以下の通りです。
> >> >> >
> >> >> >OS:WS2003
> >> >> >DB:PowergresV2.8
> >> >> >
> >> >> >具体的な状況は、
> >> >> >・当該テーブルへのバキューム後の1レコードのUPDATEに90秒ほど掛る。
> >> >> >・その後のUPDATEは、3秒程度で完了(対象レコードを変えても同様)
> >> >> >・再度バキュームを実行後、当該テーブルへのUPDATEに90秒ほど掛る。
> >> >> >
> >> >> >といったような状況です。
> >> >> >なお、テーブルロックを明示的に書けるような操作はしておりません(
して
> >い
> >> >ない
> >> >> >と思
> >> >> >います)。
> >> >> >また、フルバキュームやリインデックスを実行しても状況は変わりませ
んで
> >し
> >> >た。
> >> >> >
> >> >> >クエリ自体は、
> >> >> >
> >> >> >UPDATE テーブル名 SET カラム名 WHERE カラム名(主キー)=キー値
> >> >> >
> >> >> >といったもので、外部参照されているカラムの値の変更はしていません
。
> >> >> >
> >> >> >ちなみに、SELECTやDELETEは1秒程度で、UPDATEのみ時間が掛ってしまい
ま
> >す。
> >> >> >
> >> >> >本現象について、なにかお心あたりやご経験がある方がいらっしゃいま
した
> >ら
> >> >ご教
> >> >> >授
> >> >> >いただけませんでしょうか?
> >> >> >
> >> >> >よろしくお願いいたします。
> >> >> >
> >> >> >以上
> >> >> >
> >> >> >
> >> >> 
> >> >
> >> >
> >> 
> >
> >
> 




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