postgresql.confの解説【PostgreSQL】
設定ファイル(postgresql.conf)とは
・ postgresql.confはPostgreSQLについての様々な設定をするファイルです
・ パラメータは1行に1つだけ設定できます
・ #はコメントに使われる記号で、それより右側がコメントとなります(途中からコメントアウトでOK)。
行頭に書けば、行全体がコメント行になります
・ 設定ファイルを変更した場合、ファイルの再読み込みにより有効になるパラメータと、データベースの再起動が必要になるパラメータがあります
設定ファイル(postgresql.conf)の場所
設定ファイルは、初期設定で『C:\Program Files\PostgreSQL\XX\data\postgresql.conf』にあります。
設定値の確認方法
設定値を確認するには「SHOW」を使用します。
--設定値を確認する
SHOW ALL;
SHOW 設定値名;
--設定値を確認する例
SHOW max_connections; -- 100
SHOW shared_buffers; -- 128MB
変更した設定値の反映させる
設定値を修正後、反映するには設定ファイルの再読み込みもしくは、PostgreSQLの再起動が必要になります。どちらが必要になるかは項目ごとに異なるため注意が必要です。
設定できる値について
・ 数値型の場合、kB(キロバイト)、MB(メガバイト)、GB(ギガバイト)の単位が指定可能
・ 時間型の場合、d(日)、h(時間)、min(分)、s(秒)、ms(ミリ秒)を指定可能。指定しない場合、項目ごとのデフォルトの単位が使用される。注意点として、msはミリ秒であり、マイクロ秒ではない。また、分の指定はmではなく、min。月単位の指定は不可。単位は大文字と小文字が区別されることも注意。
・ Boolean型(=論理値型、論理値データ型と表現される場合あり)は、デフォルトのonもしくはoffのほか、trueもしくはfalse、あるいは、1もしくは0をとることができる
・ コメントは「#」に続けて書く。「- -」や「/* */」は使用不可
設定項目について
それぞれの設定値について説明と補足です。
max_connections
説明
・ データベースサーバーへの同時最大接続数を指定する(接続数が最大値に達するとエラーが発生)
・ max_connectionはその値にあわせて起動時にマシンリソースを確保するため、ただ大きく設定すればよいというものではない
・ データベースクラスタ単位で設定するもので、データベース単位で設定で設定するものではない
・ superuser_reserved_connections(この下)はmax_connectionsに含まれるため、スーパーユーザーの数を含めて考慮が必要
・ 初期値は100
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)
superuser_reserved_connections
説明
・ スーパーユーザーのために予約されている接続数を指定する。接続数がmax_connectionのパラメータを超えたときにスーパーユーザーが接続できなくなることを防ぐ。
・ デフォルトは3。
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)
shared_buffers
説明
・ メモリサイズを指定する。デフォルトで128MB
・ 1GB以上のRAMを載せた専用データベースサーバの場合、妥当な初期値はシステムメモリの25%
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)
port
・ 接続するポートを指定する。デフォルトは5432
log_destination
説明
・ log_destinatonはログの出力先を指定するパラメータ
・ stderr、syslog、eventlog、csvlogの4種類の値が指定できる
・ eventlogはWindows上で動作するPostgreSQLのみ指定ができる
・ csvlogは出力先ではなく、ログの形式を表す値です。これは出力先を表す値とカンマ区切りで組み合わせて指定する
・ csvlogを指定するとログの項目がカンマ区切りの書式(CSV)で出力される
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
log_checkpoints
説明
・ チェックポイント処理が発生したことをログに出力。デフォルトはoff
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
log_connections
説明
・ クライアントからサーバに接続されたこと(サーバへの接続試行)をログに出力。デフォルトはoff
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)
log_directory
説明
・ ログの出力先となるディレクトリをlog_directoryで設定
・ ディレクトリは絶対パスまたは、データベースクラスタディレクトリからの相対パスで指定する
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
log_disconnections
説明
・ クライアントのサーバ接続終了をログに出力、デフォルト値はoff
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)
log_filename
・ ログのファイル名
log_line_prefix
・ ログメッセージの先頭行に追記する情報
log_rotation_age
説明
・ 分単位で指定。指定時間が経過すると新しいログファイルが生成される(1~1440)。デフォルトは24時間。
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
log_statement
説明
・ 指定した種類のSQLが発行されたことをログに出力、デフォルトは"none"
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
log_truncate_on_rotation
説明
・ ログファイルのローテーション時に同名ファイルがあった時に上書きするか追加するかの設定。デフォルトはoff
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
temp_buffers
説明
・ ソートなどセッションが一時的に使用するメモリを指定する
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
maintenance_work_mem
説明
・ VACUUMやCREATE INDEXなどの保守作業に使用されるメモリサイズを指定する
値の反映
・ PostgreSQLの再読み込みでOK(reloadでOK)
wal_buffers
説明
WAL(Write-Ahead Log)データ用に共有メモリで確保されるメモリサイズを指定する。PostgreSQLではバッファキャッシュの内容は、トランザクションがコミットされるかバッファがあふれるごとに書き出される。デフォルトの設定である-1は、shared_buffersの1/32の大きさとなる。
値の反映
・ PostgreSQLの再起動が必要(reloadでは不可)