無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

18.11. クライアント接続デフォルト

18.11.1. 文の動作

search_path ( string )

この変数は、オブジェクト(テーブル、データ型、関数など)がスキーマを指定されていない単純な名前で参照されている場合に、スキーマを検索する順番を指定します。 異なるスキーマに同じ名前のオブジェクトがある場合、検索パスで最初に見つかったものが使用されます。 検索パス内のどのスキーマにも存在しないオブジェクトを参照するには、修飾名(ドット付き)でそのオブジェクトが含まれるスキーマを指定する必要があります。

search_path の値は、スキーマの名前をカンマで区切った一覧でなければなりません。 存在していないスキーマ、またはユーザが USAGE 権限を所有していないスキーマは警告なしに無視されます。

もしそのようなスキーマが存在し、ユーザがそれにたいして USAGE 権限を所有している場合、一覧内の項目の1つが特別な名前である $user の場合、 SESSION_USER と同じ名前を持つスキーマがあれば、そのスキーマが置換されます。 (このような名前空間がない場合は $user は無視されます。)

システムカタログのスキーマである pg_catalog は、パスでの指定の有無にかかわらず、常に検索されます。 パスで指定されている場合は、指定された順序で検索されます。 pg_catalog がパスに含まれていない場合、パスに含まれる項目を検索する 前に 検索が行われます

同様に、現在のセッションの一時テーブルスキーマ pg_temp_ nnn も、存在すれば常に検索されます。 これは pg_temp という別名を使用してパスに明示的に列挙させることができます。 パスに列挙されていない場合、最初に( pg_catalog よりも前であっても)検索されます。 しかし、一時スキーマはリレーション(テーブル、ビュー、シーケンスなど)とデータ型名に対してのみ検索されます。 関数や演算子名に対してはまったく検索されません。

対象となる特定のスキーマを指定せずにオブジェクトが作成された場合、それらのオブジェクトは search_path で名前を付けられた最初に有効となっているスキーマに配置されます。 検索パスが空の場合、エラーが報告されます。

このパラメータのデフォルト値は "$user", public です。 この設定はデータベースの共有(どのユーザも非公開のスキーマを持たず、全員が public を共有)、ユーザごとの非公開のスキーマ、およびこれらの組み合わせがサポートします。 デフォルトの検索パスの設定を全体的またはユーザごとに変更することで、その他の効果を得ることもできます。

SQL 関数の current_schemas によって、検索パスの現在の有効な値を調べることができます( 項9.25 を参照してください)。 これは、 search_path の値を調べるのとは異なります。 current_schemas は、 search_path に現れる項目がどのように解決されたかを表すからです。

スキーマ操作に付いてより多くの情報は、 項5.7 を参照してください。

default_tablespace ( string )

この変数は、 CREATE コマンドで明示的にテーブル空間を指定していない場合にオブジェクトの作成先となるデフォルトのテーブル空間を指定します。

値はテーブル空間名、もしくは現在のデータベースのデフォルトのテーブル空間を使用することを意味する空文字列です。 この値が既存のテーブル空間名と一致しない場合、 PostgreSQL は自動的に現在のデータベースのデフォルトのテーブル空間を使用します。 デフォルト以外のテーブル空間が指定された場合、ユーザはそのテーブル空間で CREATE 権限を持たなければなりません。 さもなくば作成に失敗します。

この変数は一時テーブル向けには使用されません。 一時テーブル向けには代わりに temp_tablespaces が考慮されます。

同時に、この変数はデータベース作成時には使用されません。

テーブル空間に付いてより詳細な情報は 項21.6 を参照してください。

temp_tablespaces ( string )

この変数は、 CREATE コマンドで明示的にテーブル空間が指定されない場合に、生成する一時オブジェクト(一時テーブルと一時テーブル上のインデックス)を格納するテーブル空間(複数可)を指定します。 大規模データ集合のソートなどを目的とした一時ファイルもまた、このテーブル空間(複数可)に作成されます。

この値はテーブル空間名のリストです。 リストに複数の名前が存在する場合、一時オブジェクトが作成される度に PostgreSQL は無作為にリストから要素を選択します。 トランザクションの内側は例外で、連続して作成される一時オブジェクトはそのリストで連続するテーブル空間に格納されます。 リスト内の選択された要素が空文字列だった場合、 PostgreSQL は自動的に現在のデータベースのデフォルトのテーブル空間を代わりに使用します。

temp_tablespaces を対話式に設定する場合、存在しないテーブル空間を指定するとエラーになります。 ユーザが CREATE 権限を持たないテーブル空間を指定した場合も同様です。 しかし事前に設定された値を使用する場合、存在しないテーブル空間は無視されます。 ユーザが CREATE 権限を持たないテーブル空間も同様です。 具体的には、この規則は postgresql.conf 内で設定した値を使用する場合に適用されます。

デフォルト値は空文字列です。 この結果、すべての一時オブジェクトは現在のデータベースのデフォルトのテーブル空間内に作成されます。

default_tablespace も参照してください

check_function_bodies ( boolean )

このパラメータは通常オンです。 off に設定すると、 CREATE FUNCTION の間で関数本体文字列の妥当性検証を無効にします。 妥当性検証を無効にすることは、時たまダンプから関数定義をリストアする時に参照を転送するような問題を回避する場合には便利です。

default_transaction_isolation ( enum )

SQLトランザクションはそれぞれ、 "read uncommitted" "read committed" "repeatable read" 、または "serializable" のいずれかの隔離レベルを持ちます。 このパラメータは各新規トランザクションのデフォルトの隔離レベルを制御します。 デフォルトは "read committed" です。

より詳細は 第13章 および SET TRANSACTION を調べてください。

default_transaction_read_only ( boolean )

読み取り専用のSQLトランザクションでは、非一時的テーブルを変更することができません。 このパラメータは、各新規トランザクションのデフォルトの読み取りのみ状況を制御します。 デフォルト off (読み書き)です。

より詳細な情報は SET TRANSACTION を調べてください。

default_transaction_deferrable ( boolean )

シリアライザブル 隔離レベルで運用されている場合、繰り延べ読み取り専用SQLトランザクションは、その処理の許可の前に遅延されることがあります。 しかし、ひとたび処理が開始されるとシリアライザブル可能性を保障するために必要ないかなるオーバヘッドも発生させません。 従って、シリアル化(直列化)のコードは、このオプションを長期間にわたる読み取り専用トランザクションに対して適切な処置と位置づけ、同時実行の更新の観点から中断を強制する理由はありません。

このパラメータはそれぞれの新規トランザクションのデフォルトでの繰り延べ状態を制御します。 現時点では、読み取り専用トランザクション、または シリアライザブル より低位の隔離レベルの運用に対して効果はありません。

より詳細は SET TRANSACTION を参照してください。

session_replication_role ( enum )

現在のセッションでのレプリケーションに関連したトリガおよびルールの発行を制御します。 この変数を設定するにはスーパーユーザ権限が必要で、かつ、これまでにキャッシュされた問い合わせ計画が破棄されることになります。 取り得る値は、 origin (デフォルト)、 replica local です。 詳細については ALTER TABLE を参照してください。

statement_timeout ( integer )

指定されたミリ秒を越えてコマンドがクライアントからサーバに届いたどんなコマンドの実行も停止します。 もし、 log_min_error_statement ERROR もしくはそれ以下に設定されると、タイムアウトする文は同時にログに書き込まれます。値がゼロ(デフォルト)の場合、これを無効にします。

すべてのセッションに影響することがあるので、 postgresql.conf 内で statement_timeout を設定することは推奨されません。

lock_timeout ( integer )

テーブル、インデックス、行、またはその他のデータベースオブジェクトに対してロック獲得を試みている最中、指定されたミリ秒数を超えて待機するいかなる命令も停止されます。 時間制限はそれぞれのロック取得の試みに対し個別に適応されます。 制限は明示的ロック要求(例えば LOCK TABLE 、または SELECT FOR UPDATE without NOWAIT など)および暗黙的に取得されるロックに適用されます。 log_min_error_statement ERROR またはそれより低く設定されると、時間制限を超えた命令はログに記録されます。値ゼロ(デフォルト)はこの機能を無効にします。

statement_timeout と異なり、このタイムアウトはロックを待機しているときのみ発生します。 命令によるタイムアウトは常に第一に起動されるため、もし statement_timeout が非ゼロであれば lock_timeout を同一、もしくはより大きい値に設定するのは的を得ていません。

lock_timeout postgresql.conf にて設定することは、すべてのセッションに影響を与える可能性があるため推奨されません。

vacuum_freeze_table_age ( integer )

テーブルの pg_class . relfrozenxid フィールドがこの設定で指定した時期に達すると、 VACUUM はテーブル全体の走査を行います。 デフォルトは1.5億トランザクションです。 ユーザはこの値をゼロから10億までの任意の値に設定することができますが、 VACUUM は警告することなく、周回問題対策のautovacuumがテーブルに対して起動する前に定期的な手動 VACUUM が実行する機会を持つように、 autovacuum_freeze_max_age の95%に実効値を制限します。 項23.1.5 を参照してください。

vacuum_freeze_min_age ( integer )

VACUUM がテーブルスキャン時にトランザクションIDを FrozenXID に置き換えるかどうかを決定する際に使用する、カットオフ(トランザクション)年代を指定します。 デフォルトは5千万トランザクションです。 ユーザはこの値を0から10億までの間で任意の値に設定することができますが、 VACUUM は警告なく autovacuum_freeze_max_age の半分までの値に値を制限します。 このため、強制的なautovacuumの間隔が不合理に短くなることはありません。 詳細は 項23.1.5 を参照してください。

bytea_output ( enum )

bytea 型の値の出力形式を設定します。 有効な値は hex (デフォルト)、および escape (PostgreSQLの伝統的な書式)です。 より詳細は 項8.4 を参照してください。 bytea 型は常にこの設定に係わらず、入力時に双方の書式を受け付けます。

xmlbinary ( enum )

バイナリデータをXMLに符号化する方法を設定します。 例えばこれは、 xmlelement xmlforest 関数で bytea 値をXMLに変換する際に適用されます。 取り得る値は base64 hex です。 どちらもXMLスキーマ標準で定義されています。 デフォルトは base64 です。 XMLに関連した関数については 項9.14 を参照してください。

実のところこの選択はほとんど趣味の問題で、クライアントアプリケーションで起こり得る制限のみに制約されます。 どちらの方法もすべての値をサポートしますが、hex符号化方式はbase64符号化方式より少し大きくなります。

xmloption ( enum )

XMLと文字列値との変換時に DOCUMENT とするか CONTENT とするかを設定します。 この説明については 項8.13 を参照してください。 有効な値は DOCUMENT CONTENT です。 デフォルトは CONTENT です。

標準SQLに従うと、このオプションを設定するコマンドは以下のようになります。

SET XML OPTION { DOCUMENT | CONTENT };

この構文はPostgreSQLでも使用可能です。

18.11.2. ロケールと書式設定

DateStyle ( string )

日付時刻値の表示書式を設定し、曖昧な日付入力の解釈規則を設定します。 歴史的な理由により、この変数には2つの依存した要素が含まれています。 出力書式指定( ISO Postgres SQL German )と年/月/日の順序の入出力指定( DMY MDY YMD )です。 これらは分けて設定することもまとめて設定することもできます。 Euro および European キーワードは DMY の同義語であり、 US NonEuro NonEuropean MDY の同義語です。 詳細は 項8.5 を参照してください。 組み込みのデフォルトは ISO, MDY ですが、 initdb により、選択された lc_time ロケールの動作に対応した設定で設定ファイルが初期化されます。

IntervalStyle ( enum )

間隔の値の表示形式を設定します。 sql_standard 値は、 SQL 標準間隔リテラルに一致する出力を生成します。 (デフォルトの)値 postgres は、 DateStyle パラメータが ISO に設定されている場合、リリース8.4以前の PostgreSQL に一致する出力を生成します。 値 postgres_verbose は、 DateStyle パラメータが非 ISO 出力に設定されている場合、リリース8.4以前の PostgreSQL に一致する出力を生成します。 値 iso_8601 は、ISO 8601の4.4.3.2節で定義されている時間間隔 "format with designators" に一致する出力を生成します。

また IntervalStyle パラメータはあいまいに入力された時間間隔の解釈に影響を与えます。 詳細については 項8.5.4 を参照してください。

TimeZone ( string )

表示用およびタイムスタンプ解釈用の時間帯を設定します。 組み込まれているデフォルトは GMT ですが、通常は postgresql.conf により上書きされます。 initdb によりこれらと関連した設定をシステム環境にインストールされます。 詳細は 項8.5.3 を参照してください。

timezone_abbreviations ( string )

サーバで日付時刻の入力として受付け可能となる時間帯省略形の集合を設定します。 デフォルトは 'Default' です。 これはほぼ全世界で通じる集合です。 また、 Australia India 、その他特定のインストレーションで定義可能な集合が存在します。 詳細は 付録B を参照してください。

extra_float_digits ( integer )

このパラメータは、 float4 float8 、幾何データ型などの浮動小数点値の表示桁数を調整します。 パラメータ値が標準的な桁数( FLT_DIG もしくは DBL_DIG どちらか適切な方)に追加されます。 この値は、部分有効数を含めるために3まで設定することができます。 これは基本的に、正確にリストアする必要がある浮動小数点データをダンプするために有用です。 もしくは、不要な桁を抑制するために負の値を設定することもできます。 項8.1.3 も参照してください。

client_encoding ( string )

クライアント側符号化方式(文字セット)を設定します。デフォルトはデータベース符号化方式を使用します。 PostgreSQL サーバでサポートされている文字セットは 項22.3.1 に記載されています。

lc_messages ( string )

メッセージが表示される言語を設定します。使用可能な値はシステムに依存します。詳細については 項22.1 を参照してください。 この変数が空に設定された場合(これがデフォルトです)、値はシステムに依存する方法でサーバの実行環境から継承されます。

システムによっては、このロケールのカテゴリが存在しません。この変数を設定することはできますが、実効性はありません。 また、指定の言語に翻訳されたメッセージが存在しないこともあります。 その場合は、引き続き英語のメッセージが表示されます。

サーバログやクライアントに送信されるメッセージに影響するため、および、全ての不適切な値がサーバログの信頼性を損ねる可能性があるため、スーパユーザのみがこの設定を変更することができます。

lc_monetary ( string )

通貨書式で使用するロケールを設定します。 例えば、 to_char() 系の関数で使用します。 使用可能な値はシステムに依存します。 詳細については 項22.1 を参照してください。 この変数が空に設定された場合(これがデフォルトです)、値はシステムに依存する方法でサーバの実行環境から継承されます。

lc_numeric ( string )

数字の書式で使用するロケールを設定します。 例えば、 to_char 系の関数で使用します。 使用可能な値はシステムに依存します。 詳細については 項22.1 を参照してください。 この変数が空に設定された場合(これがデフォルトです)、値はシステムに依存する方法でサーバの実行環境から継承されます。

lc_time ( string )

例えば to_char 系関数における、日付と時間の書式で使用するロケールを設定します。 使用可能な値はシステムに依存します。 詳細については 項22.1 を参照してください。 この変数が空に設定された場合(これがデフォルトです)、値はシステムに依存する方法でサーバの実行環境から継承されます。

default_text_search_config ( string )

明示的な設定指定引数を持たないテキスト検索関数の亜種で使用される、テキスト検索設定を選択します。 詳細は 第12章 を参照してください。 組み込みのデフォルトは pg_catalog.simple ですが、 initdb は、ロケールに合う設定を認識することができれば、選択された lc_ctype ロケールに対応した設定で設定ファイルを初期化します。

18.11.3. その他のデフォルト

dynamic_library_path ( string )

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

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

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

Windows環境の場合は以下です。

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

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

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

gin_fuzzy_search_limit ( integer )

GINインデックス走査により返されるセットのソフトな上限サイズです。 詳細は 項57.4 を参照してください。

local_preload_libraries ( string )

この変数は、接続時に事前読み込みされる、1つまたは複数の共有ライブラリを指定します。 複数のライブラリが読み込まれる場合、コンマで名前を区切ってください。 二重引用符で括らていない限り、全てのライブラリ名は小文字に変換されます。 このパラメータは、特定のセッションが開始した後で変更することはできません。

これはスーパーユーザのみのオプションではありませんので、読み込み可能なライブラリはインストレーションの共有ライブラリディレクトリのサブディレクトリ plugins 内にあるものに制限されています。 (確実に "安全" なライブラリのみをここにインストールすることはデータベース管理者の責任です。) local_preload_libraries 内の項目で、たとえば $libdir/plugins/mylib のようにこのディレクトリを明示的に指定することも、単にライブラリ名を指定することも可能です。 mylib $libdir/plugins/mylib と同じ効果です。

shared_preload_libraries とは異なり、最初に使用する時にライブラリを読み込む操作とセッション開始時にライブラリを読み込む操作との間に性能的な違いはありません。 しかし、この機能の目的は、特定のセッションに明示的な LOAD コマンドを行わずに、デバッグ用または性能測定用のライブラリを読み込ませることを可能にすることです。 たとえば、このパラメータを ALTER ROLE SET を使用して設定すれば、あるユーザ名で行われるすべてのセッションでデバッグが可能になります。

指定したライブラリが存在しない場合、接続に失敗します。

PostgreSQLがサポートするライブラリはすべて、互換性を保証するために検査される "マジックブロック" を持ちます。 このため、この方法でPostgreSQL以外のライブラリが読み込まれることはありません。


powered by SEO.CUG.NET