[pgsql-jp: 35815] 同一テーブルのJONで一定数を超えると反応しなくなる

Shigeru Matsumoto matsumoto @ zsd.co.jp
2005年 8月 9日 (火) 18:06:37 JST


お世話になります。松本と申します。

一つのSQL文で同一テーブルを複数回JOINするSQLを書いておりますが
ある一定数までは即時に結果が返ってきますが、ある一定数を超えると
途端に結果が返ってこなくなります。

SQLの例
select a.*,b.name,c.name,d.name from tableA a,tableX b,tableX c,tableX d,1・・
where a.id = b.id and a.id = c.id and a.id = d.id ・・・
(実際にはもぅ少しキーと取得する項目が多いです)

環境
OS:Redhat linux9 
PostgreSQL 8.0.3
物理メモリ:512M
私の環境ですと同一テーブルが7つまでのJOINはすぐに結果が返ってきて
8個目のJOINを追加すると返ってこなくなりました。
結果が返ってこない時にOSのTOPコマンドで見てみるとCPU100%になっております。

1つのSQLで使えるバッファサイズ等(?)が超えてしまった為に起きる
現象なのでしょうか?

postgresql.confのshared_buffersを2倍(2000)にしてみても結果は
変わりませんでした。
postgresql.confの値やOSの設定値を替えて解決できる物なのでしょうか?
(テーブル構造が悪いと言えばそうなのですが・・)
一応Explainでindexが使われている事は確認しました。

他にどの辺りをチェックすれば良いでしょうか?
よろしくお願いします。

松本 滋




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