プロセスまわり
マスタサーバプロセス
接続要求ごとにバックグラウンドプロセスをfork()して起動するプロセス
ライタ
共有バッファ内の更新されたベージを対応するデータファイルのブロックに書き出す
WALライタ
WALをファイルに書き出すプロセス。リカバリ時やストリーミングレプリケーションで使用される場合に重要
チェックポインタ
クラッシュ時にどこからリカバリを行うかを示す。チェックポイント(全てのダーティページをデータファイルに反映)
自動バキュームランチャと自動バキュームワーカ
自動バキュームを制御
データの更新や削除でハッセした不要領域を再利用で生きるようにする処理
統計情報コレクタ
データベースの活動状況に関する統計情報を一定間隔で収集する
バックエンドプロセス
クライアントから接続要求を受けた時に生成されるプロセス
問い合わせの実行に関して
パーサ
字句解析
SQLがどんなトークンから構成されているかを解析する
flexを使っているルールは./backend/parser/scan.l 構文解析
SQLの記述規則に合っているかを検査して問い合わせツリーを生成する
bisonを利用し.yのふぁいる内容に基づいて、渡されたSQLがPostgreSQLで規定された構文にあっているかをチェック
構文解析のルール: ./backend/parser/gram.y
リライタ
SQLを実行するデータベースにルールが定義されている場合、そのルールを参照してリライたで問い合わせツリーを修正して問い合わせツリーを修正する。
プランナ・オプティマイザ
最適な実行計画を生成
個々のテーブルに対するアクセス方法の選択
テーブルスキャンの方式
結合方法の選択
問い合わせツリーが複数のテーブルを対象とする場合には結合方法を選択する
入れこループ結合、マージ結合、ハッシュ結合→適用可能な結合方法の統計情報を元に判断
エグゼキュータ
実行計画に従って必要な行の集合を抽出(DMLのみを対象に処理)