サーバー設定のパラメータ操作方法の種類
- 設定ファイルによるパラメータ操作
- SQLを通じたパラメータ操作
- シェルによるパラメータ操作
設定ファイルによるパラメータ操作とは
(通常 data ディレクトリに格納されている)postgresql.conf ファイル上に、パラメータを指定する方法。
20.1.2. 設定ファイルによるパラメータ操作
内のサンプル:
# This is a comment
log_connections = yes
log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB
postgresql.auto.confファイルは、postgresql.confの設定を上書き(優先)する。
ALTER SYSTEM
コマンドによるパラメータ設定されると、postgresql.auto.confファイルに反映され、次回サーバー起動時にもpostgresql.auto.confファイルから読み込まれてパラメータ反映される。
postgresql.auto.confファイルを直接修正してはならない。
サーバー稼働中に、postgresql.confファイルやpostgresql.auto.confファイルを変更しても反映されない。
20.1.5. 設定ファイルの内容の管理に依ると、《複雑なpostgresql.confファイルを複数の小さなファイルに分割する複数の方法を提供》しており、include
ディレクティブとinclude_dir
ディレクティブが使える模様。
SQLを通じたパラメータ操作とは
-
ALTER SYSTEM
コマンドによる、データベースクラスタ全体にわたるサーバの設定パラメータを変更 -
ALTER DATABASE
コマンドによる、データベース単位でグローバルな設定値を上書き -
ALTER ROLE
コマンドによる、グローバルとデータベース単位の両方をユーザ固有の設定値で上書き
セッションローカルな設定変更方法として下記2つ。
-
SHOW
コマンド、もしくはcurrent_setting()
関数 -
SET
コマンド、もしくはset_config()
関数 - システムビューの
pg_settings
を介して、セッションローカルな値を参照したり変更することも可能
SET
コマンドによる一時的な設定変更を永続化させるために、ALTER SYSTEM
コマンドを使う。
シェルによるパラメータ操作とは
- サーバ起動時に、-cコマンドラインパラメータを使ってパラメータ設定値をpostgresに渡す方法
- libpqを使ってクライアントセッションを開始するプログラムやツール(psqlとか)の場合、PGOPTIONS環境変数でパラメータ設定値を渡すことも可能
コマンドラインパラメータで渡されるパラメータ設定値は、postgresql.confやALTER SYSTEM
コマンドによるパラメータ保存を上書きする。
参考
PostgreSQL 16.0文書 より