無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

46.1. 問い合わせの経路

ここでは、問い合わせが結果を得るためにたどる過程を簡単に説明します。

  1. アプリケーションプログラムから PostgreSQL サーバに接続が確立されなくてはなりません。 アプリケーションプログラムはサーバに問い合わせを送り、そしてサーバから送り返される結果を待ちます。

  2. 構文解析過程 で、アプリケーションプログラムから送られた問い合わせの構文が正しいかをチェックし、 問い合わせツリー を作成します。

  3. 書き換えシステム は構文解析過程で作られた問い合わせツリーを受け取り、 問い合わせツリー に適用するための( システムカタログ に格納されている) ルール を探します。 そして ルール本体 で与えられた変換を実行します。

    書き換えシステムの適用例の1つとして ビュー の具現化が挙げられます。 ビュー(すなわち 仮想テーブル )に対して問い合わせがあると、書き換えシステムが代わってユーザの問い合わせを、 ビュー定義 で与えられた 実テーブル にアクセスする問い合わせに書き換えます。

  4. プランナ/オプティマイザ は、(書き換えられた)問い合わせツリーを見て、 エクゼキュータ に渡すための 問い合わせ計画 を作ります。

    そのためにまず同じ結果をもたらす全ての可能な限りの 経路 を作ります。 例えば、スキャンの対象となるリレーション上にインデックスがあるとすると2つの経路があります。 1つは単純なシーケンシャルスキャンで、もう1つはインデックスを使ったスキャンです。 次にそれぞれの経路を実行するためのコストが見積もられ、一番コストの小さい経路が選ばれます。 一番コストの小さな経路は、エクゼキュータが実行できるように完全な計画に拡張されます。

  5. エクゼキュータは再帰的に 計画ツリー 上を進み、計画で示されている方法で行を抽出します。 エクゼキュータはリレーションをスキャンする間 保存システム を利用して ソート 結合 を実行し、 検索条件 の評価を行い、最後に得られた行を返します。

これからの節では、 PostgreSQL の内部制御とデータ構造をより良く理解するために、上に記載した事柄をさらに詳しく説明します。


powered by SEO.CUG.NET