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

tamagawa tamagawa @ sts.co.jp
2003年 3月 9日 (日) 21:06:26 JST


http://www.php.net/manual/ja/function.ociparse.php

Ken-ichi Nakayama wrote:
> でも、PostgreSQLにはオプティマイザ・プランナなるものは
> あるようですが? > 玉川@STSさん

いや、そりゃあります。SQLの問い合わせが結果集合の「定義」を
与えるもので、それを「実行」する順序を指定するものではない以上、
どんなエンジンにも「オプティマイザ・プランナ」の同類は必ず
あるはずです。

PHPからOracleを使った場合とPostgreSQLを使った場合で違うのは、
プランナが作成した結果(実行計画)をキャッシュして使い回す
機能の有無です。

PHP+Oracleの場合、ociparseで一度解釈した(プランを作成した)ら、
その結果をそれ以降の問い合わせの実行の際に再利用できるので、
プランナの動作を省けるわけです。

ところがPHP+PostgreSQLの場合、少なくとも現時点ではSQL文の解釈
と実行を別々に行う関数がないので、必ず毎回プランナの動作が入って
しまいます。

従って、PHP+PostgreSQLの場合、小さい問い合わせが頻発するような
ケースでは、PHP+Oracleで適切に作られたプログラムに比べて、本質
的に不利を抱えていることになるわけです。
--
玉川@STS




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