他のバージョンの文書 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

18.1. パラメータの設定

全てのパラメータの名前は大文字と小文字を区別しません。 それぞれのパラメータは、論理値、整数、浮動小数点、文字列、またはenum(列挙型)の5つの型のいずれかの値を取ります。 論理値は、ONOFFTRUEFALSEYESNO10をとることができます(全て大文字小文字の区別はありません)。もしくは、あいまいでないこれらの接頭文字です。

一部の設定では、メモリや時刻に関する値を指定します。 これらは暗黙的な単位を持ちます。キロバイト、ブロック(通常8キロバイト)、ミリ秒、秒、分などです。 デフォルトの単位はpg_settings.unitを参照することで調べることができます。 簡便性のために別の単位を明示的に指定することができます。 メモリに関する単位では、kB (キロバイト)、MB (メガバイト)、GB(ギガバイト)が有効です。 時刻に関する単位ではms(ミリ秒)、s (秒)、min (分), h (時間)、d (日数)が有効です。 メモリの乗数は1000ではなく1024であることに注意してください。

"列挙"型のパラメータは文字列パラメータと同様の方法で指定されますが、限定された値の集合に制限されます。 許容される値はpg_settings.enumvalsから見つけることができます。 列挙型パラメータ値には大文字小文字の区別がありません。

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

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

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

パラメータ設定の他、postgresql.confにはinclude 指示子があります。 この指示子は、設定ファイルの当該位置に指定したファイルが挿入されているかのように、そのファイルを読み込み処理することを指定します。 include指示子は以下のような単純なものです。

include 'filename'

ファイル名が絶対パスでなければ、参照元の設定ファイルがあるディレクトリからの相対パスとみなされます。 含まれるものは入れ子にすることができます。

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

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

postgres -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コマンドは、それぞれこれらの設定を構成するために用いられます。 データベース毎の設定は、セッション毎の設定で上書きされるpostgresコマンドライン、または設定ファイルから受け取った何であっても上書きします。そして順次ユーザ毎の設定が上書きします。共にセッション毎の設定で上書きされます。

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

SET ENABLE_SEQSCAN TO OFF;

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

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

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