🗻 クライアント/サーバ間の接続・通信
PostgreSQLのクライアント/サーバ間の接続の流れです。
- クライアントからPostgreSQLに接続要求
- クライアント/サーバ間で認証を実施
- PostgreSQLがバックエンドプロセスを生成
- クライアントとバックエンドプロセス間の接続を確立
🐞 問い合わせ
クライアントからのSQLクエリの問い合わせ処理の流れです。
機能 | 説明 |
---|---|
パーサ/字句解析 | SQLがどういった構文で構成されているかの解析を行います |
パーサ/構文解析 | 構文解析の結果がSQLの記述ルールに準拠しているかの解析を行います。問題があればエラーを返します |
パーサ/実在確認 | テーブルやカラムがDB上に存在するかのチェックを行います。問題がなければツリー構造に変換 |
リライタ | SQLを書き換えるルールがDBに設定されている場合に書き換えを実行します |
プランナー | 最適な実行計画の生成。テーブルのアクセス方法や結合方法を選択します。クエリツリーから、パス(全件スキャン、インデックス、テーブル結合)単位のコスト計算を行い、最小コストを問い合わせプランにします |
エグゼキュータ | 実行計画にしたがってDMLにもとづいてデータを抽出します |
🐡 参考リンク
- 内部構造から学ぶPostgreSQL (図の出典)