[pgsql-jp: 32972] Re: 問い合わせの速度低下

Makoto Yui m-yui @ pi.jp.nec.com
2004年 5月 19日 (水) 11:27:51 JST


油井です.

>毎日24時間、5分おきに500レコードずつどんどん追加されていくテーブルがあ
>ります。
>
>TABLE T_RESULT
>  TIME_SMPL   TIMESTAMP
>  CHECK_ID    INTEGER
>  CHECK_SUB   INTEGER
>  以下、データフィールド
>   :
>
>そこで、問題なのですが・・ CHECK_IDとCHECK_SUBとTIME_SMPLを条件としてレコー
>ドを取り出すだけの簡単なSELECT文の実行時間が、データがたまるとどんどん遅く
>なってしまうのです。(1日動かすと144000レコード増えて、SELECTの問い合わせに
>かかる時間は20倍くらいになってしまいます)
>
>遅くなったときに VACUUM ANALYZE するとまた元通り早くなるのですが、またしばら
>くすると遅くなってきますし、データがたまってくるとVACUUM自体がとんでもなく時
>間かかってしまうので、こまめに実行できる状況ではありません。。
>
>もしかして、追加されたレコードについてはVACUUMするまでインデックスが有効にな
>らないのでしょうか。。?
>また、このような場合の何かいいパフォーマンス対策はありますでしょうか。。?

ALTER TABLE name SET STASTICSで,もう少し統計情報を詳細に取ってみては
如何でしょうか?(デフォルト値は10だっと思います)
http://www.postgresql.jp/document/pg742doc/html/sql-altertable.html

VACUUMなしのANALYZEならば,コストも高くないです.
(Analyzeだけで速度改善がなされるならば,この可能性があります).

INSERT処理による更新頻度が激しい(UPDATEではないとすると,ゴミ領域の
問題ではない),VACUUM ANALYZEで改善する,データの統計的な分布が変化
していそうってことから推測しました.

http://www.postgresql.jp/document/pg742doc/html/maintenance.html#VACUUM-FOR-STATISTICS

-- 
油井 誠 (Makoto YUI)



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