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

3.4. 実行時の設定

いろいろな意味でデータベースシステムの動作に影響するパラメータの設定はたくさんあります。ここではそれらの設定方法を述べ、後のセクションで1つ1つについて説明します。

すべてのパラメータ名は大文字/小文字を区別しません。それぞれのパラメータは下記で説明するように4つの型、ブーリアン(論理)、整数、浮動小数点、文字列のいずれかの値を持ちます。ブーリアンの値はONOFFTRUEFALSEYESNO10(大文字/小文字の区別なし)もしくは曖昧でなければこれらの頭文字でも構いません。

これらのオプションを設定するための1つの方法としては、ファイル postgresql.confをデータディレクトリに作成することがあります(デフォルトファイルがここにインストールされています)。そのファイルがどのようになっているかの例を以下に示します。

# This is a comment
log_connections = yes
syslog = 2

オプションは1行につき1つです。名前と値の間のイコール記号はなくても構いません。空白は意味を持たず、空行は無視されます。シャープ記号( "#")はどこにあってもコメントを意味します。

この設定ファイルはpostmasterがSIGHUPシグナルを受けるたびに再読み込みされます(これは、pg_ctl reload による方法が最も簡単です)。また、このシグナルは実行中のセッションが新しいデフォルトを取得するように、すべての稼働中のバックエンドプロセスにも伝えられます。また、シグナルを1つのバックエンドのみに直接送ることもできます。

これらの設定パラメータを指定する2番目の方法として、下記のようにpostmasterにコマンドラインオプションとして渡す方法があります。

postmaster -c log_connections=yes -c syslog=2

これは1つ前の例と同じ結果が得られます。コマンドラインオプションは postgresql.confの中の重複する設定を書き換えてしまいます。

コマンドラインオプションを1つの特定のバックエンドセッションのみに渡すことが有用な場合があります。これは下記のように、クライアント側で環境変数 PGOPTIONSを使用することによって可能となります(これは psqlのみならず、あらゆるクライアントアプリケーションで使用することができます)。

env PGOPTIONS='-c geqo=off' psql

しかし、ポート番号のような、サーバが起動したときに設定される必要があるオプションでは使用できないので注意してください。

=> SET ENABLE_SEQSCAN TO OFF;

構文の詳細についてはSQLコマンドの言語リファレンスを参照してください。

3.4.1. プランナとオプティマイザの調整

CPU_INDEX_TUPLE_COST (浮動小数点)

問い合わせオプティマイザがインデックススキャンの間にそれぞれのインデックスタプルを処理するコストの概算を設定します。これは順ページ取り出しのコストとの比率で評価されます。

CPU_OPERATOR_COST (浮動小数点)

オプティマイザがWHERE句の中のそれぞれの演算子を処理するコストの概算を設定します。これは順ページ取り出しのコストとの比率で評価されます。

CPU_TUPLE_COST (浮動小数点)

問い合わせオプティマイザが問い合わせの間にそれぞれのタプルを処理するコストを設定します。これは順ページ取り出しのコストとの比率で評価されます。

EFFECTIVE_CACHE_SIZE (浮動小数点)

ディスクキャッシュの実効サイズに関するオプティマイザの推測を設定します(すなわち、PostgreSQLデータファイルに使われるカーネルのディスクキャッシュです)。これは、通常は一単位8Kバイトのディスクページを基準に評価します。

ENABLE_HASHJOIN (ブーリアン)

問い合わせプランナのハッシュ結合型の計画の使用を有効または無効にします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_INDEXSCAN (ブーリアン)

問い合わせプランナのインデックススキャン型の計画の使用を有効または無効にします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_MERGEJOIN (ブーリアン)

問い合わせプランナのマージ結合型の計画の使用を有効または無効にします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_NESTLOOP (ブーリアン)

問い合わせプランナのネストループ結合計画の使用を有効または無効にします。ネストループ結合を完全に抑えることは不可能ですが、この変数を無効にすることにより他の方法がある場合、プランナがネストループ結合を使わないようにします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_SEQSCAN (ブーリアン)

問い合わせプランナが順スキャン型の計画の使用を有効または無効にします。順スキャンを完全に抑えることは不可能ですが、この変数を無効にすることにより他の方法がある場合、プランナが順スキャンを使わないようにします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_SORT (ブーリアン)

問い合わせプランナが明示的なソート処理の使用を有効または無効にします。明示的なソートを完全に抑えることは不可能ですが、この変数を無効にすることにより他のメソッドがある場合、プランナが明示的なソートを使わないようにします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

ENABLE_TIDSCAN (ブーリアン)

問い合わせプランナがTID スキャン計画の型の使用を有効または無効にします。デフォルトでは有効です。これは問い合わせプランナのデバッグで役に立ちます。

GEQO (ブーリアン)

問い合わせプランナが、しらみつぶしの検索を行うことなく問い合わせ計画を作成するアルゴリズムである遺伝的問い合わせ最適化の使用を有効または無効にします。デフォルトは有効です。他のGEQO_ 設定も参照して下さい。

GEQO_EFFORT (整数)
GEQO_GENERATIONS (整数)
GEQO_POOL_SIZE (整数)
GEQO_RANDOM_SEED (整数)
GEQO_SELECTION_BIAS (浮動小数点)

遺伝的問い合わせ最適化のアルゴリズムにはさまざまなパラメータがあります。プールのサイズは1つの個体群の個体の数です。有効な値は128から1,024までです。もし0に設定されると(デフォルトです)、QSが問い合わせの中のFROM句の数である2^(QS+1)のプールサイズが選ばれます。これは世代のデフォルトを計算するために行われます。固定値は1から80の間で、デフォルトは40です。世代はアルゴリズム中の反復の数を指定します。その数は正の整数でなくてはいけません。もし0が指定された場合、Effort * Log2(PoolSize)が使われます。そのアルゴリズムの実行時間は、大雑把にいえばプールサイズと世代の合計に比例します。この選択の偏りは個体群の中の選択圧力です。値は1.5から2.00の間で、2.00がデフォルトです。アルゴリズムから再現可能な結果を得るために乱数シードを設定することができます。もし-1に設定されるとアルゴリズムは非決定論的に動作します。

GEQO_THRESHOLD (整数)

少なくともこれだけの数のFROM句の項目を含む問い合わせを計画する場合には、遺伝的問い合わせ最適化を使用します(JOIN構造は1つの FROM句として数えられます)。デフォルトは11です。もっと単純な問い合わせでは、決定論的でしらみつぶし検索プランナを使うのが最適でしょう。このパラメータはまた、オブティマイザが副問い合わせのFROM 句を上位問い合わせにマージさせる時の困難性の制御も行います。

KSQO (ブーリアン)

キーセット問い合わせオプティマイザKSQO)は、問い合わせプランナに、WHERE句にたくさんのAND句をORで繋げたものを持つ(たとえば WHERE (a=1 AND b=2) OR (a=2 AND b=3) ...)問い合わせをUNION文に変換させます。このメソッドはデフォルト実装よりも速くできますが、UNIONは同一出力行を削除するために暗黙的にSELECT DISTINCT句を追加するため、必ずしも同じ結果にはなりません。KSQO は一般的に Microsoft Accessのような、こういった形式の問い合わせをよく使う製品を使用した作業で使われます。

KSQOアルゴリズムは、たくさんのAND句をORで繋げた問い合わせではかつては必須でしたが、PostgreSQL 7.0以降では標準プランナがこれらの問い合わせをかなり上手に処理します。したがってデフォルトでは無効です。

RANDOM_PAGE_COST (浮動小数点)

問い合わせオプティマイザの順不同に取りだされたディスクページのコストの概算を設定します。これは順ページ取り出しコストの倍数で評価されます。

Note: 残念なことに、上記で説明された"COST"変数のファミリーの理想的な値を決定するきっちりと決められた方法はありません。実験してみてよい方法があったら教えてください。

3.4.2. ログとデバッグ

DEBUG_ASSERTIONS (ブーリアン)

さまざまな表明(assert)のチェックを有効にします。これはデバッグ用の道具です。もし問題やクラッシュがある場合は有効にすると、プログラムの間違いが明らかになるかもしれません。このオプションを使うためには、 PostgreSQL を構築するときにマクロ USE_ASSERT_CHECKINGが定義されていなければいけません( --enable-cassertの設定オプションを見てください)。 PostgreSQL をそのように構築すると DEBUG_ASSERTIONSはデフォルトでは有効になります。

DEBUG_LEVEL (整数)

この値が高く設定されるほど、操作中、サーバログにさまざまな "デバッグ"用出力が行われます。このオプションはデフォルトでは0で、これはデバッグ用表示なしです。現在では4までの値しか意味がありません。

DEBUG_PRINT_QUERY (ブーリアン)
DEBUG_PRINT_PARSE (ブーリアン)
DEBUG_PRINT_REWRITTEN (ブーリアン)
DEBUG_PRINT_PLAN (ブーリアン)
DEBUG_PRETTY_PRINT (ブーリアン)

これらのフラグはサーバログに送られる各種デバッグ出力を有効にします。実行された問い合わせそれぞれについて、問い合わせテキスト、解析ツリー、問い合わせ書き換えの出力、実行計画が表示されます。DEBUG_PRETTY_PRINT はこれらの表示をより読みやすくするためにインデントしますが、出力形式がより長くなります。 DEBUG_LEVEL を 0 以上に設定することにより、これらのフラグの一部は暗黙的に有効になります。

HOSTNAME_LOOKUP (ブーリアン)

デフォルトでは、接続ログはホストのIPアドレスのみを表示します。もしホスト名を表示させたい場合はこれを有効にしますが、ホスト名解決の設定によっては無視できないほどの性能の低下をもたらすこともあります。このオプションはサーバ起動時にのみ設定できます。

LOG_CONNECTIONS (ブーリアン)

成功した接続を知らせる行をサーバーログに出力します。デフォルトでは無効ですが、これはとても役に立ちます。このオプションはサーバー起動時、または、 postgresql.conf 設定ファイルでのみ設定できます。

LOG_PID (ブーリアン)

それぞれのサーバログメッセージの冒頭にバックエンドプロセスのプロセスIDを付けます。これは、どのメッセージがどの接続に属しているかをはっきりするのに役立ちます。デフォルトでは無効です。

LOG_TIMESTAMP (ブーリアン)

それぞれのサーバログメッセージの先頭にタイムスタンプを付けます。デフォルトでは無効です。

SHOW_QUERY_STATS (ブーリアン)
SHOW_PARSER_STATS (ブーリアン)
SHOW_PLANNER_STATS (ブーリアン)
SHOW_EXECUTOR_STATS (ブーリアン)

それぞれの問い合わせに対し、注目すべきモジュールの性能統計値をサーバログに書き出します。これは粗野なプロファイルの道具です。

SHOW_SOURCE_PORT (ブーリアン)

接続ログメッセージの中で接続するホストのポート番号を表示します。どのユーザーが接続を開始したかを調べるためにポート番号を使うことができます。それ以外では特に役に立たないのでデフォルトでは無効になっています。このオプションはサーバー起動時にのみ設定することができます。

STATS_COMMAND_STRING (ブーリアン)
STATS_BLOCK_LEVEL (ブーリアン)
STATS_ROW_LEVEL (ブーリアン)

これらのフラグは、バックエンドがどの情報を統計収集プロセスに送信するのかを決定します。現在のコマンド、ブロックレベルの活動統計情報、または、低レベルな活動統計情報です。デフォルトでは全て無効です。統計情報収集を有効にすることは問い合わせ実行速度に小量のコストが発生し、また、デバッグや性能調整にはあまり意味がありません。

STATS_RESET_ON_SERVER_START (ブーリアン)

有効にした場合、収集された統計情報はサーバが再起動する度に0 にされます。無効の場合、統計情報は再起動されたサーバを跨って累積されます。デフォルトは有効です。このオプションはサーバの起動時のみ設定できます。

STATS_START_COLLECTOR (ブーリアン)

サーバが統計情報収集サブプロセスを起動するかどうかを制御します。デフォルトでは有効ですが、収集された統計情報に興味がない場合は無効にすることができます。このオプションはサーバの起動時のみ設定できます。

SYSLOG (整数)

PostgreSQLは、ログのために syslogを使うことができます。もしこのオプションが1に設定されていると、メッセージはsyslogと標準出力の両方に表示されます。2の設定はsyslogのみに表示されます(標準エラー出力、標準出力に表示されるメッセージもいくつかあります)。デフォルトでは0ですが、これは syslogが無効ということです。このオプションはサーバの起動時に設定されなくてはいけません。

syslogを使うためにはPostgreSQL のビルドがオプション--enable-syslogで設定されていなくてはいけません。

SYSLOG_FACILITY (文字列)

このオプションはsyslogが有効なときに syslog"ファシリティ"を使うようにします。LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7の中から選ぶことができ、デフォルトはLOCAL0です。使用しているシステムの syslogドキュメントも参照してください。

SYSLOG_IDENT (文字列)

このオプションは、syslogのログが有効な場合に syslogログメッセージの中の PostgreSQLメッセージを識別するために使われるプログラム名を指定します。デフォルトはpostgresです。

TRACE_NOTIFY (ブーリアン)

コマンドLISTENNOTIFYのための大量なデバッグ表示をさせます。

3.4.3. 全般的な操作

AUSTRALIAN_TIMEZONES (ブーリアン)

真(true)ならば、CSTESTSAT は北米中央、北米西タイムゾーンと土曜日ではなく、オーストラリアタイムゾーンとして解釈されます。デフォルトは偽(false)です。

AUTHENTICATION_TIMEOUT (整数)

クライアント認証の完了までの(秒単位の)最大時間です。この時間内にクライアントがその認証手順を完了できなかった場合、サーバは何も手続きなしに接続を止めます。これはクライアントがずっと接続状態になることを防止します。このオプションはサーバ起動時かpostgresql.confファイルでのみ設定することができます。

DEADLOCK_TIMEOUT (整数)

これは、デッドロック状態があるかどうかを調べる前にロックを待つ時間をミリ秒で計算したものです。デッドロックのチェックは比較的遅いので、ロックを待つたびには実行したくありません。(楽天的ですが)デッドロックは実用レベルのアプリケーションでは頻繁に発生しないと仮定し、ロック解除をするかどうか調べる前に単にロック待ちします。この値を増やすことにより必要のないデッドロックのチェックで無駄にされる時間は減りますが、本当にデッドロックがあった場合の報告が遅れます。デフォルトは1000(つまり1秒)で、おそらく実用の際にはこれ以上は必要でしょう。負荷の大きいサーバーではもっと必要かもしれません。理想としてはこの設定は通常のトランザクションにかかる時間を越えているべきです。そうすればロック待ちトランザクションがデッドロックのチェックをする前にロックが解除される可能性が改善されます。このオプションはサーバ起動時にのみ設定できます。

DEFAULT_TRANSACTION_ISOLATION (文字列)

SQL トランザクションはそれぞれ、"read committed" または、 "serializable"のどちらかの隔離レベルを持ちます。このパラメータは新規トランザクションでどの隔離レベルが設定されるかを制御します。デフォルトはread committed です。

より詳細については、PostgreSQL ユーザガイドSET TRANSACTIONコマンドを参照して下さい。

DYNAMIC_LIBRARY_PATH (文字列)

オープンする必要がある動的ロード可能なモジュールの名前がディレクトリ要素がなく(つまり、名前にスラッシュが含まれずに)指定された場合、システムは指定されたファイルをこのパスから検索します。(使用される名前は CREATE FUNCTION または LOAD で指定される名前です。)

dynamic_library_path の値は、絶対パスのディレクトリ名をコロンを区切った一覧です。このディレクトリ名が特別な $libdir という値から始まる場合、コンパイルされた PostgreSQL パッケージのライブラリディレクトリに置換されます。ここには、 PostgreSQL 配布物により提供されるモジュールがインストールされます(このディレクトリ名を表示するには、 pg_config --pkglibdir を使用して下さい)。値の例を以下に示します。

dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'

このパラメータのデフォルト値は $libdir です。この値が空に設定された場合、自動的なパス検索は無効になります。

このパラメータはスーパユーザによって実行時に変更することができますが、この方法での設定は、そのクライアント接続が終るまでしか有効になりません。ですので、この方法は開発目的でのみ使用すべきです。推奨方法はこのパラメータを postgresql.conf 設定ファイル内で設定することです。

FSYNC (ブーリアン)

このオプションを有効にすると、PostgreSQLバックエンドがいくつかの場所でfsync()システムコールを使い、更新が物理的にディスクに書き込まれカーネルバッファキャッシュ内に残っていないことを確実にします。これはオペレーティングシステムかハードウェアのクラッシュの後でもデータベースインストレーションが使える可能性を大いに高くします(データベースサーバ自体のクラッシュは考慮されません)。

しかし、このような操作は、いろいろな場所でオペレーティングシステムがバッファを吐き出すのを待つためにブロックすることになり、 PostgreSQLの動作が遅くなります。fsyncなしだと、オペレーティングシステムはバッファリング、ソート、そして遅延書き込みにより、最高の状態で実行することができ、性能が大きく向上します。しかし、もしシステムがクラッシュすると、コミットされたトランザクションの最後のいくつかは一部または全部なくなる可能性もあります。最悪の場合、データが復旧できなくなることもあります。

このオプションは、PostgreSQLユーザと開発者のコミュニティでの永遠の議論となっています。常に無効にする人もいれば、問題が起こったときに必ず再実行できるという前堤で大容量データのロードするときだけ無効にする人もいます。安全を重視するために有効のままにする人もいます。そのほうが確実なので、デフォルトでは有効になっています。もし使っているオペレーティングシステム、ハードウェア、そして付属設備(UPSならもっといいのですが)を信頼するならば、fsyncを無効にしたほうがよいかもしれません。

PostgreSQLバージョン7.1では、fsyncを実行した場合の性能の低下は、以前のリリースと比べてとても小さくなりました。もし性能の問題でfsyncをやめていた場合は、もう一度確認したほうがよいでしょう。

このオプションは、サーバ起動時かファイル postgresql.confでのみ設定できます。

KRB_SERVER_KEYFILE (文字列)

Kerberosのサーバキーファイルの場所を設定します。詳細は Section 4.2.3を参照してください。

MAX_CONNECTIONS (整数)

データベースサーバがいくつの同時接続を許可するかを決定します。デフォルトでは(サーバをコンパイルするときに変更していない限り)32です。このパラメータはサーバ起動時にのみ設定することができます。

MAX_EXPR_DEPTH (整数)

パーサが受け入れる式のネストの深さの最大を設定します。デフォルトの値は通常の問い合わせでは十分ですが、必要があれば上げてください(しかし高くしすぎると、スタックオーバーフローによるバックエンドクラッシュの危険性があります)。

MAX_FILES_PER_PROCESS (整数)

各サーバサブプロセスで同時にオープンできるファイルの最大数を設定します。デフォルトは 1000 です。コード内で実際に使用されるこの制限は、この設定よりも少なく、sysconf(_SC_OPEN_MAX) の結果です。そのため、 sysconf が適切な制限を返すシステムでは、この設定を気にする必要はありません。しかし、システムによっては(特にほとんどのBSDシステムでは)、 sysconf はシステムが実際に多くのプロセスが全てその数のファイルを開こうとした時にサポートできる値よりもかなり大きな値を返します。 "Too many open files" という失敗が発生した場合は、この設定を減らして下さい。このオプションはサーバ起動時またはpostgresql.conf 設定ファイルでのみ設定することができます。設定ファイルでの変更は、その後に起動したサーバサブプロセスにのみ影響を与えます。

MAX_FSM_RELATIONS (整数)

空き領域を共有された空き領域マップで管理する、リレーション(テーブル)の最大数を設定します。デフォルトは 100 です。このオプションはサーバ起動時のみで設定することができます。

MAX_FSM_PAGES (整数)

空き領域を共有された空き領域マップで管理するディスクページの最大数を設定します。デフォルトは10000です。このオプションはサーバ起動時のみで設定することができます。

MAX_LOCKS_PER_TRANSACTION (整数)

共有ロックテーブルの大きさは、最大 max_locks_per_transaction * max_connections 個の個別のオブジェクトが、ある時点でロックされるという仮定で決定されます。デフォルトの 64 は歴史的に十分な値であると証明されたものですが、多くの異なるテーブルを1つのトランザクションで使用するクライアントがある場合、この値を上げる必要があるかもしれません。このオプションはサーバ起動時のみで設定することができます。

PASSWORD_ENCRYPTION (ブーリアン)

ENCRYPTED または UNENCRYPTED の指定なしでCREATE USER または ALTER USER でパスワードが指定された場合、このフラグによりそのパスワードを暗号化するかどうかを決定します。デフォルトはオフ(パスワードを暗号化しない)です。しかし、これは将来のリリースで変更されるかもしれません。

PORT (整数)

サーバが監視するTCPポートです。デフォルトでは5432です。このオプションはサーバ起動時にのみ設定できます。

SHARED_BUFFERS (整数)

データベースサーバが使う共有メモリバッファの数を設定します。デフォルトでは64です。それぞれのバッファは通常8,192バイトです。このオプションはサーバ起動時にのみ設定できます。

SILENT_MODE (ブーリアン)

postmasterを「寡黙に」起動します。このオプションが有効にされるとpostmasterが自動的にバックグラウンドで動き、制御端末が切り離されます。したがって、標準出力にも標準エラー出力にもメッセージは表示されなくなります(postmasterの-Sオプションと同じ結果です)。エラーメッセージが見えなくなるので、syslogなどのログシステムが有効でない限りこのオプションは使わないほうがよいでしょう。

SORT_MEM (整数)

一時ディスクファイルへの切替えを行う前に、内部ソートとハッシュで使われるメモリの量を指定します。値はKバイトで指定され、デフォルトは512Kバイトです。複雑な問い合わせでは、いくつかのソートかハッシュが並行して実行される可能性があり、その場合それぞれがデータを一時ファイルに書き出す前にこの値が指定した量のメモリを使うことが許されます。さらにそれぞれの動いているバックエンドが1つ以上のソートをしている可能性があることを忘れないでください。したがって必要なメモリ空間の合計はSORT_MEMの値の何倍にもなり得ます。

SQL_INHERITANCE (ブーリアン)

これは継承の意味、特にサブテーブルを各種コマンドでデフォルトで考慮すべきかどうか、を制御します。7.1以前のバージョンではそうではありませんでした。もし古いバージョンの動作をさせたい場合はこの変数を無効にできますが、長い目で見ればアプリケーションがサブテーブルを排除するためにONLYキーワードを使うようにするほうがよいでしょう。さらに詳しい継承の情報についてはSQL言語リファレンスとユーザガイドを参照してください。

SSL (ブーリアン)

SSL接続を可能にします。これを使う前に Section 3.7を参照してください。デフォルトでは無効です。

TCPIP_SOCKET (ブーリアン)

これが真になっていると、サーバーはTCP/IP接続を受け入れます。そうでなければローカルのUnixドメインソケットの接続のみが受け入れられます。デフォルトでは無効です。このオプションはサーバ起動時にのみ設定できます。

TRANSFORM_NULL_EQUALS (ブーリアン)

有効にした場合、expr = NULL (または NULL = expr) という形の式は expr IS NULL として扱われます。つまり、 expr の評価が NULL 値の場合真を、さもなくば偽を返します。 expr = NULL の正しい動作は常に NULL (未知)を返すことです。そのため、このオプションはデフォルトで無効です。

しかし、Microsoft Access のフィルタ形式はNULLを検査するために expr = NULL を使用する問い合わせを生成しますので、そのインタフェースを使用してデータベースにアクセスする場合は、このオプションを有効にする方が良いでしょう。 expr = NULL という形の式は(正しい解釈を使用した場合)常に NULL を返しますので、通常のアプリケーションでは意味がほとんどなく、滅多に使用されません。ですので、このオプションは実際は害はありません。しかし、慣れていないユーザはしばしばNULLに関する式の意味に戸惑いますので、デフォルトでこのオプションを有効にしていません。

このオプションは = という文字の演算子にのみ影響することに注意して下さい。他の比較演算子や等価演算子を呼び出す他の( INのような)式と計算する上で等価となる式には影響を与えません。従って、このオプションは間違ったプログラミングの汎用的な問題解決をおこないません。

関連する情報については ユーザガイド を参照して下さい。

UNIX_SOCKET_DIRECTORY (文字列)

postmasterがクライアントアプリケーションからの接続を監視するUnixドメインソケットのディレクトリを指定します。デフォルトは通常/tmpですが、ビルド時に変えることができます。

UNIX_SOCKET_GROUP (文字列)

Unixドメインソケットのグループ所有者を設定します(ソケットを所有するユーザは通常postmasterを起動するユーザです)。オプション UNIX_SOCKET_PERMISSIONSと一緒に使うと、このタイプのソケットの追加アクセスコントロール機構として使うことができます。デフォルトでは空文字列で、現在のユーザのデフォルトグループを使います。このオプションはサーバ起動時にのみ設定できます。

UNIX_SOCKET_PERMISSIONS (整数)

Unixドメインソケットのアクセス権限を設定します。Unixドメインソケットは通常のUnixファイルシステム権限の設定を使います。このオプション値は chmodumaskシステムコールが受け付ける数値のモード指定になるはずです(通常使われる8進数のフォーマットを使うためには「0」――ゼロで始まらなくてはいけません)。

デフォルトの権限は、誰でも接続できる0777になっています。適切な代わりとしては0770(ユーザーとグループのみです。UNIX_SOCKET_GROUPも見てください)や 0700(ユーザーのみ)を使うこともできます(Unixソケットには、実際には書き込み権限だけが関係あり、読み込みや実行権限を設定、解除する意味はありません)。

このアクセスコントロール機構はChapter 4で説明されたものからは独立しています。

このオプションはサーバ起動時にのみ設定することができます。

VACUUM_MEM (整数)

VACUUM が改修すべきタプルの追跡を保持するために使用するメモリの最大量を指定します。この値はkバイト単位で指定し、そのデフォルトは 8192 kバイトです。より大きな値を設定することで、多くの削除されたタプルを持つ巨大なテーブルの場バキューム処理は高速になる可能性があります。

VIRTUAL_HOST (文字列)

postmasterがクライアントアプリケーションからの接続を監視するTCP/IPホスト名かアドレスを指定します。デフォルトはすべての設定されたアドレス(localhostを含む)になっています。

3.4.4. WAL

WAL調整の詳細についてはSection 11.3も参照してください。

CHECKPOINT_SEGMENTS (整数)

自動WALチェックポイントの間の最大距離をログファイルセグメントの数(それぞれのセグメントは通常16Mバイトです)で指定します。このオプションはサーバ起動時かファイルpostgresql.confでのみ設定できます。

CHECKPOINT_TIMEOUT (整数)

自動WALチェックポイント同士の間隔を秒で指定します。このオプションはサーバ起動時かファイルpostgresql.confでのみ設定できます。

COMMIT_DELAY (整数)

コミットレコードのWALバッファへの書き出しとそのバッファのディスクへの吐き出しの間の(ミリ秒単位の)遅延時間です。システムの負荷が高く、指定間隔内で更なるトランザクションのコミット準備が整った場合、非0値の遅延により、複数のトランザクションを1回の fsync システムコールだけでコミットすることができます。しかし、もし他にコミット準備が整ったトランザクションが存在しない場合は、この遅延は単なる時間の浪費です。そのため、バックエンドがそのコミットレコードを書き出す時に、少なくとも COMMIT_SIBLINGS 個の有効なトランザクションが存在した場合にのみ、この遅延が行われます。

COMMIT_SIBLINGS (整数)

COMMIT_DELAY 遅延の実行前に必要とされる、同時にオープンされるトランザクションの最小数です。値をより大きくすることは、この遅延期間内に少なくとも1つ、他のトランザクションのコミット準備が整ったことをより確実にします。

WAL_BUFFERS (整数)

WAL ログ用の、共有メモリ内のディスクページバッファ数です。このオプションはサーバの起動時にのみ設定できます。

WAL_DEBUG (整数)

もし0でなければ、WAL関係のデバッグ表示を標準エラー出力に出します。

WAL_FILES (整数)

チェックポイント時にあらかじめ作られるログファイルの数です。このオプションはサーバー起動時かファイルpostgresql.confでのみ設定できます。

WAL_SYNC_METHOD (文字列)

WAL更新をディスクに書き出す方法を指定します。可能な値は FSYNC(それぞれのコミットでfsync()を呼び出す)、 FDATASYNC(それぞれのコミットでfdatasync()を呼び出す)、 OPEN_SYNCopen() オプションO_SYNCでWAL ファイルを書き出す)、OPEN_DATASYNCopen()オプションO_DSYNCでWALファイルを書き出す)の4 つです。これらのすべての選択がすべてのプラットフォームで使えるわけではありません。このオプションはサーバ起動時かファイルpostgresql.conf でのみ設定できます。

3.4.5. 短いオプション

便宜上、多くのパラメータには1文字のオプションスイッチがあります。下記の表でそれらを説明します。

Table 3-1. 短いオプションキー

短いオプション同義注意
-B xshared_buffers = x 
-d xdebug_level = x 
-Ffsync = off 
-h xvirtual_host = x 
-itcpip_socket = on 
-k xunix_socket_directory = x 
-lssl = on 
-N xmax_connections = x 
-p xport = x 
-fi, -fh, -fm, -fn, -fs, -ftenable_indexscan=off, enable_hashjoin=off, enable_mergejoin=off, enable_nestloop=off, enable_seqscan=off, enable_tidscan=off*
-S xsort_mem = x*
-sshow_query_stats = on*
-tpa, -tpl, -teshow_parser_stats=on, show_planner_stats=on, show_executor_stats=on*
歴史的な理由で、"*"マークが付いたオプションはpostmaster オプションの-oで個々のバックエンドプロセスに渡されなくてはいけません。たとえば、以下のようなコマンドもしくは上記で説明されたようにクライアント側からのPGOPTIONSを使います。

$ postmaster -o '-S 1024 -s'