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

パラメーターの設定

ドキュメント内 PostgreSQL Internals (1) (ページ 42-46)

2. プロセスとメモリー

2.3 インスタンス起動/停止時の動作

2.3.2 パラメーターの設定

ALTER SYSTEM 文で変更したパラメーターの値は「{PGDATA}/postgresql.auto.conf」

ファイルに書き込まれます。このファイルは手動で変更しないようにしてください。

例 17 ALTER SYSTEM文によるパラメーター変更

上記の例でもわかるように、ALTER SYSTEM文はインスタンスのパラメーターは変更 せず、postgresql.auto.confファイルのみ書き換えます。このファイルはインスタンス起動

時または pg_reload_conf 関数実行時に postgresql.conf ファイルが読み込まれた後解析さ

れ、値が適用されます。

ALTER SYSTEM 文 の パ ラ メ ー タ ー 値 と し て DEFAULT を 指 定 す る か 、ALTER

SYSTEM RESET文を実行すると、postgresql.auto.confファイルからパラメーターが削除

されます。

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'

$

例 18 ALTER SYSTEM文によるパラメータ・リセット

□ パラメーター・ファイルとSET文の構文

複数の値を持つパラメーターをパラメーター・ファイルに記述する場合は、値をカンマ(,)

で区切り、全体をシングル・クオーテーション(’)で囲みます。一方、SET文でセッショ ンのパラメーターを変更する場合は、シングル・クオーテーションの指定は行いません。

SET 文のパラメーターをシングル・クオーテーションで囲むと単一の値として認識されま す。

例 19 ファイルとSET文の構文の違い

□ パラメーター記述形式とエラー

postgresql.conf ファイルには標準のパラメーター以外にContribモジュール等が使用す

る 独 自 の パ ラ メ ー タ ー を 記 述 で き ま す 。 多 く の 場 合 パ ラ メ ー タ ー 名 の 形 式 は

「{MODULENAME}.{PARAMETER}」です。インスタンス起動時、この形式で記述された パラメーターは正当性のチェックが行われません。Contribモジュール用のパラメーターが 間違って記述されていてもインスタンスは正常に起動されます。またSHOW文でも間違っ たパラメーター名のまま情報を取得できます。

このため Contrib モジュール用のパラメーターを設定する場合は、設定後に動作を確認 すべきです。

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.

$

$ grep temp_tablespaces ${PGDATA}/postgresql.conf temp_tablespaces = 'pg_default,ts1'

$ psql

postgres=# SET temp_tablespaces='ts2, ts3' ; ERROR: tablespace "ts2, ts3" does not exist postgres=# SET temp_tablespaces=ts2, ts3 ; SET

postgres=#

例 20 間違ったパラメーター名の記述

ALTER SYSTEM文ではContribモジュールのパラメーターもパラメーター名のチェッ

クが行われるため、間違った名前のパラメーターは設定できません。

□ パラメーター・ファイルの確認

パラメーター・ファイル(postgresql.conf, postgresql.auto.conf)の記述内容は、

pg_file_settings カタログから確認できます。このカタログに対する検索が行われる度

にファイル内容が解析され、ファイルに記述された情報を参照できます。

例 21 ファイル内容をカタログから確認

$ grep autoexplain postgresql.conf

autoexplain.loganalyze = true ← 正しくは auto_explain.log_analyze = true

$ pg_ctl –D data start –w waiting for server to start....

LOG: redirecting log output to logging collector process HINT: Future log output will appear in directory "pg_log".

done

server started ← 正常起動

$ psql

postgres=# SHOW autoexplain.loganalyze ; ← SHOW 文で参照可能 autoexplain.loganalyze

--- true

(1 row)

postgres=# ALTER SYSTEM SET port=5434 ; ALTER SYSTEM

postgres=# SELECT sourcefile, name, setting FROM pg_file_settings WHERE name = 'port' ;

sourcefile | name | setting ---+---+--- /usr/local/pglsq/data/postgresql.auto.conf | port | 5434 (1 row)

ドキュメント内 PostgreSQL Internals (1) (ページ 42-46)