PostgreSQLの内部構造
第2章ではPostgreSQLの内部構造を紐解きながら,
PostgreSQLの内部構造を知ることで,
PostgreSQLのソースコードの場所
PostgreSQLのソースコードは全部で120万行以上
もっと詳しく知りたいと思った人は,
プロセスの構造と役割
まずはプロセスについて説明します。
PostgreSQLは,
Linuxアーキテクチャに詳しい人からすると,
このようにPostgreSQLはマルチプロセスですから,
表1 主なプロセス
プロセス | 内容 |
---|---|
マスタプロセス | 最初に起動される親プロセス |
ライタ | 共有バッファの内容をデータファイルに書き出す |
WALライタ | WALバッファの内容をWALファイルに書き出す |
チェックポインタ | すべてのダーティページをデータファイルに書き出す |
自動VACUUMランチャ | 設定にしたがって自動VACUUMワーカを起動する |
自動VACUUMワーカ | 自動VACUUMを実行する。複数起動することがある |
統計情報コレクタ | データベースの活動状況に関する統計情報を収集する |
バックエンドプロセス | クライアントの接続要求ごとに起動し, |
スタートアッププロセス | PostgreSQLの起動時などにクラッシュリカバリ処理を行う |
ロガー | PostgreSQLのログをファイルへ書き出す |
アーカイバ | WALログをアーカイブする |
WALセンダ | レプリケーション時にWALをスレーブサーバに転送する |
WALレシーバ | レプリケーション時にWALをマスタプロセスから受信する |
バッググランドワーカ | 汎用的なワーカ。バックグランドワーカをユーザーが定義した場合も起動する |
ロジカルレプリケーションランチャ | ロジカルレプリケーション時に受信側で1プロセスのみ起動するバックグランドワーカ |
ロジカルレプリケーションワーカ | ロジカルレプリケーション時に受信側で複数起動するバックグランドワーカ |
パラレルワーカ | パラレルスキャンを実行時に起動するバックグランドワーカ |
PostgreSQLは,
そのため,
このようにPostgreSQLは,