[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 メーリングリストの案内