[pgsql-jp: 34385] Re: パフォーマンスチューニング

TANIDA Yutaka tanida @ sra.co.jp
2004年 12月 1日 (水) 18:35:30 JST


谷田です。

On Wed, 01 Dec 2004 18:15:37 +0900
北村 英志 <ekitamura @ valueclick.jp> wrote:

> ・INDEX(feed_id, able_id等)について
> 	いずれも既にINDEXを張っていますが、使用されていないようです。こ
> 	のクエリーですと">"などが使用されているからでしょうか。
> 	#テーブルのプライマリキーのINDEXは、table_pkeyがあるので改めて作
> 	成する必要はないですよね?

まあ、indexが使われない理由にはいろいろなものがありますが・・・

set enable_seqscan to false;としてからexplainを取るとどうなりますか?


> ・VACUUM FULLについて
> 	DBを止めるには色々と準備がありますので、少し先の話になってしまう
> 	かと思いますが、いずれ試してみたいと思います。

なぜか広まっている誤解ですが「VACUUM FULLを実施するのにDBを止める必要は
ありません」

実行中該当テーブルにアクセスできなくなりますが、同様にアクセスできなくな
るreindexが可能であればこちらも大丈夫なのではないかと思います。結構時間
がかかるのではないかと思いますが・・・

> ・postgresql.conf設定について
> 	まだ勉強不足のため、各パラメータの詳細を理解してからいじりたいと
> 	思います。
> 
> 
> On Wed, 01 Dec 2004 17:31:48 +0900
> TANIDA Yutaka <tanida @ sra.co.jp> wrote:
> 
> > 谷田です。このSQLはもともとものすごく重いんじゃないかと思いますが・・・
> > 
> > On Wed, 01 Dec 2004 16:54:54 +0900
> > 北村 英志 <ekitamura @ valueclick.jp> wrote:
> > 
> > > 谷田様
> > > 
> > > > explain analyzeの結果を見せて頂くことはできますか?
> > > 
> > > 少々見づらいと思いますが・・・
> > > 
> > 
> > >                ->  Hash Join  (cost=4516.62..50155.60 rows=99462 width=60) (actual time=6313.877..35382.972 rows=18 loops=1)
> > >                      Hash Cond: ("outer".feed_id = "inner".feed_id)
> > >                      Join Filter: ((("inner".ldata_id IS NULL) OR ("outer".id > "inner".ldata_id)) AND (("outer".ts_inst >= "inner".ts_fetch) OR ("outer".id > "inner".ldata_id)))
> > >                      ->  Seq Scan on fdata fd  (cost=0.00..27777.54 rows=227554 width=20) (actual time=0.006..25332.762 rows=227670 loops=1)
> > 
> > このseq scanが一番の問題ですね。fdataテーブルをvacuum fullしたり、
> > reindexすることで問題が解決しますか?あるいはfeed_idにインデックスを張っ
> > ていますか?
> > 
> > >                      ->  Hash  (cost=4511.81..4511.81 rows=1924 width=60) (actual time=558.671..558.671 rows=0 loops=1)
> > >                            ->  Hash Join  (cost=3.83..4511.81 rows=1924 width=60) (actual time=0.518..536.029 rows=10538 loops=1)
> > >                                  Hash Cond: ("outer".able_id = "inner".id)
> > >                                  ->  Seq Scan on ablesub as  (cost=0.00..4322.49 rows=33249 width=52) (actual time=0.007..357.254 rows=33279 loops=1)
> > 
> > ここも問題ではないかと思います。同様にablesubテーブルを処理できると思い
> > ます。あるいは、able,ablesubテーブルable_idやidカラムにindexを張ってます
> > か?
> > 
> > -- 
> > TANIDA Yutaka <tanida @ sra.co.jp>
> 

-- 
TANIDA Yutaka <tanida @ sra.co.jp>




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