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

Ken-ichi Nakayama aguri @ ssl.fujitsu.com
2003年 3月 9日 (日) 19:23:12 JST


なかやまです。

On Sun, 9 Mar 2003 18:52:55 +0900
Tsukasa Koizumi <tsukasa @ koiz.com> wrote:
tsukasa> <3E6AE191.3070103 @ sts.co.jp> の、
tsukasa>    "[pgsql-jp: 29328] Re: パフォーマンス向上策" において、
tsukasa>    "tamagawa <tamagawa @ sts.co.jp>"さんは書きました:

skip

tsukasa> > 3)の場合は、Oracleで言うところのprepareが効いてくるケース
tsukasa> > です。一般にRDBでは、問い合わせの内容から実行計画を立てる
tsukasa> > (PostgreSQLではexplain planで出せるやつですね)訳ですが、
tsukasa> > この作業がかなり重たいのです。で、Oracleの場合はprepareし
tsukasa> > ておけば、同じような問い合わせの場合は前に使った計画を
tsukasa> > そのまま使ってくれます。PostgreSQL+PHPにはこのPrepareの
tsukasa> > 機能がないので、問い合わせの実行数そのものが多い場合には
tsukasa> > Oracleに比べて不利になるでしょうね。MySQLの場合は、そもそも
tsukasa> > 複雑な問い合わせができないので、実行計画を立てるのにほと
tsukasa> > んど時間がかからないような感じです。
tsukasa> 
tsukasa> あー、「Oracleが速い」と聞かされたのは、このことだったんですね。
tsukasa> なるほど。

Oracleが「速い」といわれているのは、この実行計画を
データの状態を事前分析(統計情報の取得:ANALYZE)する、
もしくは手動(ヒント)を与えて、状態に対する最適な
アクセスパスを選択・もしくは置き換える機能によるものでしょう。
いわゆるオプティマイザ。

マニュアルにはPREPARE文は無い、とありましたけど、
でも、PostgreSQLにはオプティマイザ・プランナなるものは
あるようですが? > 玉川@STSさん

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/performance-tips.html

Oraの場合prerare時に内部的には一緒にやってしまうかもしれませんが、
一般的にはPREPAREはQueryに対するカーソルの事前定義・オープン
だと思いますが。


-- 
中山 賢一   <E-Mai> aguri @ ssl.fujitsu.com <Web> http://www.ssl.fujitsu.com 
株式会社富士通ソーシアルサイエンスラボラトリ ビジネス基盤センター 企画部
TEL: 044-739-1566(内線:3612)  FAX: 044-739-1548




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