postgres

Name

postgres -- シングルユーザモードの PostgreSQL サーバの実行

Synopsis

postgres [-A 0 | 1 ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-e] [-E] [-f s | i | t | n | m | h ] [-F] [-i] [-N] [-o filename] [-O] [-P] [-s | -t pa | pl | ex ] [-S sort-mem] [-W seconds] [--name=value] database
postgres [-A 0 | 1 ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-e] [-f s | i | t | n | m | h ] [-F] [-i] [-o filename] [-O] [-p database] [-P] [-s | -t pa | pl | ex ] [-S sort-mem] [-v protocol-version] [-W seconds] [--name=value]

説明

postgres 実行プログラムは、問い合わせ処理を実際に行う PostgreSQL サーバプロセスです。 通常、これが直接呼び出されることはありません。 代わりに postmaster マルチユーザサーバが起動されます。

上から 2 番目の形式は、postgres がどのように postmaster から呼び出されるかを表しています (これは概念的なものにすぎません。 なぜなら postmasterpostgres は実際には同じプログラムだからです)。 このプログラムはこのような方法で直接的に呼び出されるべきではありません。最初の形式はサーバを対話的なシングルユーザモードで直接呼び出します。このモードの主な使い道は、initdb によるブートストラッピングです。デバッグのためや災害からの復旧のために使用されることもあります。

シェルから対話的モードで呼び出された場合、ユーザは問い合わせを入力し、結果はスクリーン上に表示されますが、エンドユーザよりも開発者にとってより便利な形式が使われます。しかし、単一ユーザバックエンドはサーバのデバッグにはふさわしくありません。 なぜなら現実的なプロセス間の通信とロックは起こらないからです。

スタンドアロンバックエンドを起動する際、セッションユーザは、ユーザ ID 1 と設定されます。 このユーザは実際に存在していなくてもかまいません。 ですので、スタンドアロンバックエンドは、システムカタログの偶発的な損害などからの復旧作業に使用することができます。 スタンドアロンモードでは、ユーザ ID 1 のユーザは、暗黙的にスーパーユーザ権限が与えられます。

オプション

postgrespostmaster から起動された場合は、postmaster により設定された全てのオプションを継承します。更に、postgres 固有のオプションは postmaster から -o オプションで渡すことができます。

設定ファイルを設定することによって、これらのオプションを入力する手間を省くことができます。詳細は 管理者用ガイ ド を参照して下さい。いくつかの (安全な) オプションは接続しているクライアントからアプリケーションに依存する方法で設定することができます。 例えば、環境変数 PGOPTIONS が設定されると、libpq に基づくクライアントは、その文字列をサーバに渡し、サーバはそれを postgres のコマンドラインオプションとして解釈します。

一般的な目的

-A-B-c-d-D-F、および --name の各オプションは、-d 0 が postmaster のデバッグレベルのバックエンドへの伝搬を禁止するという点を除き、postmaster の場合と同じ意味です。

-e

デフォルト日付データ形式を "ヨーロッパ式" にします。 これは "日が月の前" (月が日の前ではなく) というルールがあいまいな日付の入力を解釈する際に使われ、特定の日付出力フォーマットでは日が月の前に表示されるということです。詳細は PostgreSQL ユーザガイド を参照して下さい。

-o filename

全てのデバッグ出力とエラー表示を filename に送ります。 バックエンドが postmaster の下で稼動している場合、このオプションは無視され、その標準エラー出力 stderrpostmaster から引き継がれます。

-P

システムタプルのスキャン/更新の際にシステムインデックスを無視します。システムテーブル/インデックスに対する REINDEX コマンドはこのオプションの使用を要求します。

-s

時間情報と他の統計をそれぞれの問い合わせの最後に表示します。これはベンチマーク、もしくはバッファ数の調整に便利です。

-S sort-mem

一時ディスクファイルを再ソートする前に、内部ソートとハッシュに使われるメモリ量を指定します。その値はキロバイトで指定され、デフォルトでは 512 キロバイトです。複雑な問い合わせでは、いくつかのソートもしくはハッシュが並行して実行されている可能性があり、データを一時ファイルに挿入し始める前に、それぞれが sort-mem キロバイト分だけ使うことができるということに注意してください。

スタンドアロンモードのオプション

database

アクセスされるデータベースの名前を指定します。もしそれが省略されると、デフォルトはユーザ名になります。

-E

すべての問い合わせをエコー表示します。

-N

改行を問い合わせ区切り文字として使うことを無効にします。

半内部的オプション

その他にも、主にデバッグ用に使われる、いくつかのオプションを指定することができます。これらは PostgreSQL システム開発者による使用のためだけにここにリストされています。 これらのオプションはむやみに使用しないで下さい。更に、これらのオプションのいずれも将来のリリースでは予告なしに廃止されるか変更される可能性があります。

-f { s | i | m | n | h }

特定のスキャンと結合メソッドの使用を禁止します。si は順スキャンとインデックススキャンをそれぞれ無効にし、n, m そして h は、ネストループ、マージ、そしてハッシュ結合をそれぞれ無効にします。

Note: 順スキャンとネストループのどちらも完全に無効にすることはできません。 -fs オプションと -fn オプションは単に、もし他の選択がある場合は、オプティマイザがこれらのプラン型を使わないようにするというだけです。

-i

問い合わせは実行しませんが、プランツリーは表示します。

-O

システムテーブルの構造を変更することを可能にします。これは initdb によって使われます。

-p database

このサーバが postmaster によって起動されたことを示し、バッファプール管理、ファイル記述子、などについて別の想定をします。

-t pa[rser] | pl[anner] | e[xecutor]

それぞれの主要なシステムモジュールと関連する、それぞれの問い合わせのタイミング統計を表示します。このオプションは -s オプションと一緒に使うことはできません。

-v protocol

このセッションで使われるフロントエンド/バックエンドプロトコルのバージョン番号を指定します。

-W seconds

このオプションが入力されると、プロセスは指定された秒のあいだスリープに入ります。これは開発者に、バックエンドプロセスにデバッガを接続する時間を与えます。

環境

PGDATA

デフォルトのデータ保存場所です。

シングルユーザモードではほとんど使用されないその他の環境については postmaster を参照してください。

注釈

実行中の問い合わせを停止するには、SIGINT シグナルを使用します。 postgres に、設定ファイルを再度読み込むよう指示するには、SIGHUP シグナルを使用します。 postmaster では、postgres プロセスを通常どおりに終了するには SIGTERM を、通常のクリーンアップを行なわずに終了するには SIGQUIT を使用します。 これらは ユーザが使用すべきではありません

使用方法

下記のコマンドによりスタンドアロンバックエンドを起動します。

postgres -D $PGDATA other-options my_database

データベース領域の正確なパスを -D で指定、もしくは、環境変数 PGDATA が設定されているか確認して下さい。また、作業対象とするデータベースの名前を指定して下さい。

通常、スタンドアロンバックエンドでは、改行をコマンド入力の終りとみなします。 psql におけるセミコロンのような高度な機能はありません。コマンドが複数行に渡る場合は、最終行を除き、改行を入力する前にバックスラッシュを入力しなければなりません。

ただし、-N コマンドラインスイッチを使用する場合、改行はコマンド入力の終りではなくなります。 バックエンドは標準入力をファイル終端 (EOF) マークまで読み取り、その入力を 1 つの問い合わせ文字列として処理します。この場合は、バックスラッシュと改行の組み合わせは特別扱いされません。

セッションを終了するには、 EOF (通常 Control+D) を入力します。 -N を使用している場合の終了には、EOF を 2 度連続して入力する必要があります。

スタンドアロンバックエンドには、高度な行編集機能が用意されていないことに注意して下さい (例えばコマンド履歴はありません)。

関連項目

initdb, ipcclean, postmaster