★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

第 17章サーバの構成

目次
17.1. パラメータの設定
17.2. ファイルの場所
17.3. 接続と認証
17.3.1. 接続設定
17.3.2. セキュリティと認証
17.4. 資源の消費
17.4.1. メモリ
17.4.2. 開放領域マップ
17.4.3. カーネル資源使用
17.4.4. コストに基づくVacuum遅延
17.4.5. バックグラウンドライタ
17.5. ログ先行書き込み(WAL)
17.5.1. 設定
17.5.2. Checkpoints
17.5.3. 格納
17.6. 問い合わせ計画
17.6.1. プランナ方針構成
17.6.2. プランナコスト定数
17.6.3. 遺伝的問い合わせオプティマイザ
17.6.4. その他のプランナオプション
17.7. エラー報告とログ取得
17.7.1. ログの出力先
17.7.2. いつログを取得するか
17.7.3. 何をログに
17.8. 実行時統計情報
17.8.1. 統計情報監視
17.8.2. 問い合わせ、インデックス統計情報コレクタ
17.9. 自動Vacuum
17.10. クライアント接続デフォルト
17.10.1. 命令文の振る舞い
17.10.2. ロケールと書式設定
17.10.3. その他のデフォルト
17.11. ロック管理
17.12. バージョンとプラットフォーム互換性
17.12.1. 以前のPostgreSQLバージョン
17.12.2. プラットホームとクライアント互換性
17.13. 設定済みのオプション
17.14. 独自のオプション
17.15. 開発者向けのオプション
17.16. 短いオプション

データベースシステムの振舞いに影響を与える数多くのパラメータが存在します。この章の最初の節で、どの様に構成パラメータを設定するかについて説明します。引き続く節で、それぞれのパラメータの詳細を説明します。

17.1. パラメータの設定

全てのパラメータの名前は大文字と小文字を区別します。それぞれのパラメータは、論理値、整数、浮動小数点、もしくは文字列、の4つの型のいずれかの値を取ります。論理値は、(全て大文字小文字が区別された)ONOFFTRUEFALSEYESNO10、もしくはこれらが明白に前置されたどんなものでも構いません。

これらのパラメータを設定する1つの方法は、postgresql.confファイルを編集することで、これは通常 data ディレクトリに保存されています。(initdbはデフォルトでそこに複写されます。)このファイルがどういったものかの例を示します。

# これは注釈です
log_connections = yes
log_destination = 'syslog'
search_path = '$user, public'

1つの行毎に1つのパラメータが指定されます。名前と値の間の等号はオプションです。空白(white space)は特に意味を持たず、何もない行は無視されます。何処にあってもハッシュ記号(#)は注釈を意味します。単純な識別子もしくは数値でないパラメータ値は単一引用符で括られなければなりません。パラメータ値の中に単一引用符を埋め込む場合、二重引用符(より望ましい)もしくは逆引用符で括ります。

構成ファイルはpostmasterプロセスがSIGHUP信号(pg_ctl reloadにより、とりわけ容易に送られます)を受け取る時は何時でも再読み込みされます。postmasterは同時にこの信号を、現存のセッションが同様に新しい値を入手できるように、全ての現在実行しているサーバプロセスに伝播します。他の手段として、直接単一のサーバプロセスを送出することも可能です。いくつかのパラメータはサーバの起動時のみ設定されます。構成ファイル中のそれらのエントリのいかなる変更も、サーバが再起動されるまで無視されます。

これら設定パラメータを設定する第二の方法は、以下のようにpostmasterに対してコマンド・ラインオプションとして与えることです。

postmaster -c log_connections=yes -c log_destination='syslog'

コマンド・ラインオプションはpostgresql.confにある、矛盾したいかなる設定も上書きします。これが意味することは、postgresql.confを編集するだけでは、値をすぐに変更できず、コマンド・ラインによる方法は便利とは言っても、後に柔軟性に犠牲を払う羽目に陥ることを覚えておいてください。

時には、1つの特定セッションのみにコマンド・ラインオプションを与えることが便利です。環境変数 PGOPTIONSはクライアント側でこの目的のために使用できます。

env PGOPTIONS='-c geqo=off' psql

(これは、単にpsqlだけではなく、全てのlibpqに基づいたクライアントアプリケーションに対して有効です。)これは、サーバが起動された時に修正されたパラメータ、もしくはpostgresql.confで指定されなければならないパラメータに対しては有効でないことを覚えておいてください。

更に、ユーザもしくはデータベースにオプション設定のひとそろいを割り当てることができます。セッションが開始された時、ユーザとデータベースに関連したデフォルトの設定が読み込まれます。ALTER USERおよびALTER DATABASEコマンドは、それぞれこれらの設定を構成するために用いられます。データベース毎の設定は、postmasterコマンド・ラインもしくは構成ファイルから受け取られたものは何によっても上書きされます。2つともセッション前オプションで上書きされます。

個別のSQLセッションのいくつかのパラメータはSETコマンドで変更可能です。例えば:

SET ENABLE_SEQSCAN TO OFF;

もしSETが許されるのであれば、そのパラメータに対する値の全ての他の情報源を上書きします。いくつかのパラメータは SETでは変更できません。例えば、PostgreSQLを再起動すること無しでは理にかなって変更することができない振る舞いを制御する場合です。同時に、通常のユーザではなく、スーパユーザによるSETもしくはALTERにより変更可能ないくつかのパラメータがあります。

SHOWコマンドで全てのパラメータの現在値を検査することができます。

項42.41で記載された)仮想テーブルも同じ様にセッション実行時パラメータの表示と更新を認めます。それはSHOWSETと同等ですが、他のテーブルと結合されたり、もしくはいかなる欲する選択条件を使用しても選択されることから、より使用に便利です。