• 検索結果がありません。

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文の構文の違い