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

54.24. pg_settings #

pg_settingsビューはサーバの実行時パラメータへのアクセスを提供します。 基本的にSHOWSETコマンドの代わりとなるインタフェースです。 同時に最大・最小値などのようにSHOWコマンドでは直接入手できないそれぞれのパラメータのいくつかの実状にアクセスする機能を提供します。

表54.24 pg_settingsの列

列 型

説明

name text

実行時設定パラメータ名

setting text

パラメータの現在値

unit text

暗黙的なパラメータの単位

category text

パラメータの論理グループ

short_desc text

パラメータの簡潔な説明

extra_desc text

追加で、より詳細なパラメータについての説明

context text

パラメータ値を設定するために必要な文脈(後述)

vartype text

パラメータの型(boolenumintegerrealもしくはstring

source text

現在のパラメータ値のソース

min_val text

容認されている最小のパラメータ値(数値でない場合はNULL)

max_val text

容認されている最大のパラメータ値(数値でない場合はNULL)

enumvals text[]

許可された列挙パラメータの値(列挙型ではない場合はNULL)

boot_val text

パラメータが設定されていなかったとした場合に仮定されるサーバ起動時のパラメータ値

reset_val text

現状のセッションにおいてRESETによって戻されるパラメータの値

sourcefile text

現状の値が設定されている設定ファイル(設定ファイル以外のソースから設定された値の場合、スーパーユーザでもpg_read_all_settingsの権限を持たないユーザから検査された時はNULLです)。 設定ファイル内でinclude指示子を使用する時に役に立ちます。

sourceline int4

現状の値が設定されている設定ファイル内の行番号(設定ファイル以外のソースから設定された値の場合、スーパーユーザでもpg_read_all_settingsの権限を持たないユーザから検査された時はNULLです)。

pending_restart bool

trueの場合は、値が設定ファイル内で変更されたが再起動が必要。 それ以外はfalse


contextが取り得る値は複数あります。 この設定の変更の困難さを軽くするために、以下に示します。

internal

これらの設定は直接変更できません。 これらは内部で決定された値を反映するものです。 一部は異なる設定オプションでサーバを再構築する、または、initdbに与えるオプションを変更することで調整できます。

postmaster

これらの設定はサーバ起動時にのみ適用できます。 このため何かを変更するためにはサーバを再起動しなければなりません。 これらの設定用の値は通常postgresql.confファイル内に格納されている、あるいは、サーバを起動する際のコマンドラインから渡されます。 当然ながら、より低い種類のcontextを持つ設定もサーバ起動時に設定できます。

sighup

これらの設定は、サーバを再起動することなくpostgresql.conf内を変更することで行うことができます。 postgresql.confを再度読み込み、変更を適用させるためには、postmasterにSIGHUPシグナルを送信してください。 すべての子プロセスが新しい値を選択するように、postmasterは同時に子プロセスにSIGHUPシグナルを転送します。

superuser-backend

これらの設定は、サーバを再起動することなくpostgresql.conf内を変更することで行うことができます。 また、接続要求パケットの中で特定のセッション向けに設定することもできます(例えばlibpqPGOPTIONS環境変数)が、これは接続ユーザがスーパーユーザか、適切なSET権限を与えられたユーザの場合に限られます。 しかし、これらの設定はセッションが開始してから、そのセッションの中で変更することはできません。 postgresql.conf内でそれらを変更した場合は、postgresql.confを再度読み込ませるために、postmasterにSIGHUPシグナルを送信してください。 新しい値はその後で始まったセッションにのみ影響を与えます。

backend

これらの設定は、サーバを再起動することなくpostgresql.conf内を変更することで行うことができます。 また、接続要求パケットの中で特定のセッション向けに設定することもできます(例えばlibpqPGOPTIONS環境変数)。 どのユーザでも、自分のセッション向けにそのような変更ができます。 しかし、これらの設定はセッションが開始してから、そのセッションの中で変更することはできません。 postgresql.conf内でそれらを変更した場合は、postgresql.confを再度読み込ませるために、postmasterにSIGHUPシグナルを送信してください。 新しい値はその後で始まったセッションにのみ影響を与えます。

superuser

これらの設定はpostgresql.conf、または、セッションの中でSETコマンドを使用することで設定ができます。 しかしSET経由で変更できるのは、接続するユーザがスーパーユーザか、適切なSET権限を与えられたユーザに限られます。 postgresql.conf内の変更は、セッション独自の値がSETで設定されていない場合にのみ、既存のセッションに影響を与えます。

user

これらの設定はpostgresql.conf、または、セッションの中でSETコマンドを使用することで設定ができます。 任意のユーザが自身のセッション独自の値を変更することが許されています。 postgresql.conf内の変更は、セッション独自の値がSETで設定されていない場合にのみ、既存のセッションに影響を与えます。

これらのパラメータを変更する各種方法に関する情報については20.1を参照してください。

このビューには挿入も削除もできませんが、更新することは可能です。 pg_settingsの行へ適用されたUPDATEは、SETコマンドを名前付きの引数に対して実行するのと同等です。 pg_settings行に適用されるUPDATEは名前付きのパラメータに対してSETコマンドを実行することと同値です。 変更は現在のセッションで使用されている値にのみ有効です。 もしも後に中止されるトランザクション内でUPDATEが発行されると、トランザクションがロールバックされた時点でUPDATEコマンドは効力を失います。 排他制御中のトランザクションがひとたびコミットされると、その効果は他のUPDATEもしくはSETコマンドで上書きされない限りセッションの完了まで保たれます。

カスタマイズオプションを定義する拡張モジュールが、クエリを実行するバックエンドプロセスによって(たとえばshared_preload_librariesで記述された方法、拡張モジュール内のC関数の呼び出し、LOADコマンドなどによって)ロードされていない限り、このビューには表示されません。 たとえば、アーカイブモジュールは通常、通常のセッションではなくアーカイバプロセスによってのみロードされるため、クエリを実行するバックエンドプロセスにロードするための特別なアクションがとられていない限り、このビューにはこれらのモジュールによって定義されたカスタマイズされたオプションは表示されません。