[pgsql-jp: 29325] Re: パフォーマンス向上策

Yoshihiro Hanahara hanahara @ meiko.co.jp
2003年 3月 9日 (日) 12:50:34 JST


花原@明宏です。


PostgreSQLに関しては、なんちゃって管理者のレベルですが...。


On Sun, 09 Mar 2003 11:35:20 +0900
SAITO Masaru <daisaito @ lares.dti.ne.jp> wrote:

> > PostgreSQL の開発者の気持ちになってみると、普通はせいぜい数十程度の
> > テーブルしかないでしょうから、テーブル名検索にそれほど高度なアルゴリズム
> > は使用しないのではないかと思います。だとしたら、全ユーザの決済履歴どころ
> > かあらゆる処理が遅くなってもおかしくありません。
> > 
> 
> PostgreSQL内部では1テーブル1ファイルになっているものと思われます。
> # $PG/data/base/[DB名]/ 以下をのぞいてみただけですので、
> # これを別のところで管理しているとしたら外しています。
> でもって、同じディレクトリの中に数万ものファイルがあると
> 各ファイルにアクセスするのにものすごく時間がかかります。
> たぶん、indexを張るのも無駄だと思います。
> 
> もし、mysqlに変えるとしても、ここらへんの仕組みは同じですので、
> パフォーマンスが劇的に改善するとは考えにくいです。
> # 改善すると思いますが「劇的」とまではいかないのでは?と思います。


私も、1つのディレクトリに沢山ファイルがありすぎるから、検索に時間が
かかっているのではないかと推測します(OSに依存しますが)。いちど、1つのディ
レクトリに大量にファイルつくってみて、どれだけ遅くなるか検証されてみては
どうでしょう。
これが原因の場合、早いマシンもってきても、ディスクの速度で律速されるので、
たいして効果ないということになります。

FreeBSDとかだと、UFS_DIRHASH というカーネルオプションがありますが、
こういうのを追加して(FreeBSDの最近のバージョンはデフォルトでオン)、
カーネルを再構築してみれば、効果があるかもしれません。

あと、カーネルパラメータを調整したり、postgresql.conf をそれにあわせて
調整はされたのですよね。

いずれにしろ、データベース設計を見直すという以上に、有効な手立てはないよ
うに思います...(^_^;)。


ところで、使ってられるOSと、PostgreSQL等のバージョンはなんでしょうか?
私が見落としているのかもしれませんが、これらは明確に書かれていないように
見受けられますが...。見落としているのかしら...。


---
Yoshihiro Hanahara <hanahara @ meiko.co.jp>





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