[pgsql-jp: 28390] Re: PostgreSQLのパフォーマンス

Jun Kitamura kitamura @ zoozee.jp
2002年 12月 19日 (木) 18:31:19 JST


北村@zoozee です。

ちょっと PostgreSQL の話から脱線してます。すみません。

> > > > 現状のPostgreSQLのプロトコルかJDBCドライバが、
> > > > とくにスレッドを考慮した造りになっていないからでしょう。
> > > > コネクションを複数用意して それらで平行アクセスすれば速くなったりしませんか?
> > > 
> > > 
> > > コネクションはもちろんスレッド毎に作成しています。
> > 
> > コネクションをスレッド毎に作成するのではなく、コネクションマ
> > ネージャークラス(Singletonデザインパターンのような)から、コ
> > ネクションを貰う、返す、という方法にしないと、「コネクション
> > を張る動作」がボトルネックになり、遅くなると思います。
> 
> 
> スレッド毎にトランザクション管理しているので、
> Singletonデザインパターンで同一コネクションの使いまわしは
> できないと思います。

Singletonデザインパターンはあくまでも単一の「データベースコ
ネクションを管理するクラス」を実現したいだけの理由で摘要する
ものです。
問題は、そのクラス内でコネクションを各要求(この場合、各スレッ
ド)に「適切に」渡してやれば良い・・・のではないでしょうか。
コネクション管理クラスの中では、PostgreSQL に対するコネクショ
ンをプールしており、使用中か使用中で無いかのフラグを立てたり
する・・ということです。(PostgreSQLのマニュアルに記載されて
います)。

厳密に比較したわけではないので断言できませんが、PostgreSQL 
は商用データベースと比べて、コネクションを張る作業が遅いと思
います。
スレッドごとにコネクションを張っているのであれば、そこがボト
ルネックになって遅くなっている・・と思っただけです。

憶測の域を出ない意見でごめんなさい。





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