2. プロセスとメモリー
2.3 インスタンス起動/停止時の動作
2.3.2 パラメーターの設定
インスタンス起動時には{PGDATA}/postgresql.conf ファイルが解析され、パラメーター が設定されます。その後、{PGDATA}/postgresql.auto.confファイルが解析されて設定値を
$ pg_ctl -D data start server starting
LOG: redirecting log output to logging collector process HINT: Future log output will appear in directory "pg_log".
$ pg_ctl -D data start ← 同じクラスタに対して2回起動(エラーになる)
pg_ctl: another server might be running; trying to start server anyway server starting
FATAL: lock file "postmaster.pid" already exists
Is another postmaster (PID 3950) running in data directory
"/opt/PostgreSQL/9.4/data"?
$ echo $? ← pg_ctl コマンドのステータスは 0 0
postgres=# SELECT state FROM pg_stat_replication ; state
--- streaming (1 row) postgres=# \q
$ pg_ctl stop -D data -m smart
waiting for server to shut down... done server stopped
上書きします。
パラメーターの一覧を取得するには pg_settings カタログを検索するか、psql ユーティ リティからshow allコマンドを実行します。pg_settingsカタログのsource列は、パラメ ー タ ー の 設 定 元 の 情 報 が 提 供 さ れ ま す 。 下 記 列 値 は 、 ソ ー ス コ ー ド
(src/backend/utils/misc/guc.c)内の「GucSource_Names」配列で定義されている値です。
実際には、enum GucSourceで定義されたマクロ(PGC_S_{SOURCE})を使用してアクセ スされています。enum値はソースコード(src/include/utils/guc.h)で定義されています。
表 22 pg_settingsカタログのsource列
列値 説明 備考
default デフォルト値
environment variable postmasterの環境変数から導出 configuration file postgresql.conf ファイルで設定
command line postmaster起動パラメーター
global グローバル 詳細不明
database データベース毎の設定
user ユーザー単位の設定
database user ユーザーとデータベース毎の設定
client クライアントからの設定
override 強制的にデフォルト値を使用する特殊ケース
interactive エラー報告のための境界
test ユーザー毎またはデータベース毎のテスト
session SETコマンドによる変更
□ パラメータ・ファイルの動的変更
PostgreSQL 9.4からはALTER SYSTEM文により、パラメータ・ファイルの設定が動的
に永続化できるようになりました。ALTER SYSTEM文はsuperuser権限を持つユーザー のみ実行できます。
構文 1 ALTER SYSTEM文
ALTER SYSTEM 文で変更したパラメーターの値は「{PGDATA}/postgresql.auto.conf」
ファイルに記載されます。このファイルは手動で変更しないようにしてください。
ALTER SYSTEM SET パラメータ名 = 値 | DEFAULT
例 14 ALTER SYSTEM文によるパラメーター変更
上記の例でもわかるように、ALTER SYSTEM文はインスタンスのパラメーターは変更 せず、postgresql.auto.confファイルのみ書き換えます。このファイルはインスタンス起動
時または pg_reload_conf 関数実行時に postgresql.conf ファイルが読み込まれた後解析さ
れ、値が適用されます。
ALTER SYSTEM 文 の パ ラ メ ー タ ー 値 と し て DEFAULT を 指 定 す る か 、ALTER
SYSTEM RESET文を実行すると、postgresql.auto.confファイルからパラメーターが削除
されます。
例 15 ALTER SYSTEM文によるパラメータ・リセット postgres=# SHOW work_mem ;
work_mem --- 4MB (1 row)
postgres=# ALTER SYSTEM SET work_mem = '8MB' ; ALTER SYSTEM
postgres=# SHOW work_mem ; work_mem
--- 4MB (1 row) postgres=# \q
$ cat data/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
work_mem = '8MB'
$
postgres=# ALTER SYSTEM SET work_mem = DEFAULT ; ALTER SYSTEM
postgres=# \q
$ cat data/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
$
□ パラメータ・ファイルとSET文の構文
複数の値を持つパラメーターをパラメータ・ファイルに記述する場合は、値をカンマ(,)
で区切り、全体をシングル・クオーテーション(’)で囲みます。一方、SET文でセッショ ンのパラメーターを変更する場合は、シングル・クオーテーションの指定は行いません。
SET 文のパラメーターをシングル・クオーテーションで囲むと単一の値として認識されま す。
例 16 ファイルとSET文の構文の違い