1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OracleからAzure DB(PostgreSQL)へ移行する~②PostgreSQLのプロセス構成

Posted at

今回はPostgreSQLのプロセス構成について記載します。Azure DB for PostgreSQLも基本的にはPostgreSQLなので各プロセスに関してある程度理解しておいた方が何かと役に立ちます。

PostgreSQLのプロセス構成

今回のテーマはOracle DatabaseからAzure Database for PostgreSQLへの移行です。なので、Oracle Databaseと比較しますが、Oracle Databaseはデータベースを稼働させるために様々なプロセスが起動しています(ログライタ、DBライタ、SMON、PMON、etc...)。これはPostgreSQLでも同じで様々なプロセスが起動します。

ただし、PostgreSQLの場合はマスターサーバプロセスというものが存在しており、各プロセスはこのマスターサーバプロセスからフォークする、いわゆるコピーする形で様々なプロセスが起動します。代表的なプロセスを以下に図示します。これらプロセスによって、データベースへの読み込みや書き込み、統計情報の取得、あるいはバキューム処理なんかを制御しております。

image.png

各プロセスを確認してみる

先ほど紹介した各プロセスはlinux環境であればpsコマンドなんかで確認することができます。各プロセスはpostgres:から始まります。

$ ps -elf | grep postgres

結果
image.png
①マスタサーバプロセス
②ログ出力プロセス
③チェックポインタ
④ライタ
⑤WALライタ
⑥自動バキュームランチャ
⑦統計情報自動コレクタ

各プロセスの役割

各プロセスの役割ですが以下の表に大まかに記載します。
これらすべてのプロセスはマスタサーバプロセスが最初に起動し、フォークする形で様々なプロセスを起動する形となります。

プロセス名 説明 PSコマンドの表示
マスタサーバ 最初に起動される親プロセス 起動コマンドそのものが表示
ライタ 共有バッファの内容をデータファイルに書き出す writer process
WALライタ WALバッファの内容をWALファイルに書き出す wal writer process
チェックポインタ 全てのダーティーページをデータファイルに書き出す checkpointer process
自動バキュームランチャ 設定に従って自動バキュームランチャを起動 autovacuum launcher process
自動バキュームワーカ 設定に従って自動バキューム処理を実施 autovacuum worker process
統計情報コレクタ データベースの活動状況に関する統計情報を収集する Stats collector process
バックエンド クライアントから接続要求に関する統計情報収集する (ユーザ名 データベース名 [接続] 状態)という書式で表示
バックグランドワーカ ロジカルレプリケーション用のワーカ bgworker: [モジュール名]という書式で表示
パラレルワーカ パラレルスキャン実行時に起動され、クエリを処理する。 Bgworker: parallel worker for PID という書式で表示

最後に

様々なプロセスが起動しPostgreSQLの制御を行っている事をわかっていただければ幸いです。各プロセスの動きをある程度理解することは、PostgreSQLを利用するうえで意外と役に立つので是非。

次回は

次回はPostgreSQLのメモリ構成について記載したいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?