Testing and tuning commands#
EDB Postgres Distributedには、PGDクラスターのテストと調整に役立つツールが含まれています。バックグラウンドについては、 Postgres Distributed terminology を参照してください。
pgd_bench#
概要#
EDB Postgres分散展開のベンチマークツール。
pgd_bench [OPTION]... [DBNAME] [DBNAME2]
DBNAME
は、次のフォーマットのconninfo文字列です。"host=10.1.1.2 user=postgres dbname=master"
pgd_benchのオプションと使用例については、 pgd_bench in Testing and tuning を参照してください。
オプション#
pgd_benchコマンドは、
pgbenchコマンドのラッパーとして実装されています。これは、同じオプションの多くを共有し、テストを実行するときにpgbench
という名前のテーブルを作成したことを意味します。
pgd_benchに固有のオプションには次のものが含まれます。
設定モード#
-m または--mode
モードはregular 、camo 、またはfailover
に設定できます。デフォルトはregular です。
regular— pgd_benchを実行するには1つのノードのみが必要です。camo— CAMOパートナーとして機能するように2番目のノードを指定する必要があります。 CAMOの設定が必要です。failover— フェールオーバーとして機能するように2番目のノードを指定する必要があります。
-m failover を使用する場合、追加オプション--retry
を使用できます。このオプションは、フェイルオーバーが発生した場合にトランザクションを再試行するようにpgd_benchに指示します。
-m camo を使用する場合、 --retry
オプションは自動的に有効になります。
-m camo
を使用し、カスタムスクリプトを提供する場合、スクリプト内のSQLコマンドをSQLトランザクションコマンドでラップする必要があります。つまり、最初のSQLコマンドはBEGIN
であり、最後のSQLコマンドはCOMMIT である必要があります。
GUC変数の設定#
-o または--set-option
このオプションの後には、 NAME=VALUE エントリが続きます。これらは、
pgd_benchが接続する各サーバー、およびそれらのサーバーにのみPostgres
SET コマンドを使用して適用されます。
他のオプションはPostgres pgbenchコマンドと同じです。詳細については、 PostgreSQL pgbench ドキュメントを参照してください。
オプションpgd_benchおよびpgbenchの完全なリストが以下にあります。
初期化オプション#
-i, --initialize— 初期化モードを呼び出します。-I, --init-steps=[dtgGvpf]+デフォルト"dtgvp"— 選択した初期化ステップを実行します。d—既存のpgbenchテーブルを削除します。t—標準のpgbenchシナリオで使用するテーブルを作成します。g—クライアントサイドでデータを生成し、標準テーブルにロードします。既に存在するデータを置き換えます。G— サーバーサイドでデータを生成し、標準テーブルにロードし、既に存在するデータを置き換えます。v— 標準テーブルでVACUUMを呼び出します。p— 標準テーブルに主キーインデックスを作成します。f— 標準テーブル間に外部キー制約を作成します。
-F, --fillfactor=NUM— フィルファクターを設定します。-n, --no-vacuum— 初期化中にVACUUMを実行しないでください。-q, --quiet— クワイエットロギング 5秒ごとに1メッセージ。-s, --scale=NUM— スケーリング係数。--foreign-keys— テーブル間に外部キーコンストレインを作成します。--index-tablespace=TABLESPACE— 指定されたテーブルスペースにインデックスを作成します。--partition-method=(range|hash)— このメソッドでpgbench_accountsをパーティション化します。デフォルトはrangeです。--partitions=NUM—pgbench_accountsをNUMパーツにパーティション化します。デフォルトは0です。--tablespace=TABLESPACE— 指定されたテーブルスペースにテーブルを作成します。--unlogged-tables— ログのないテーブルとしてテーブルを作成します。注ログに記録されていないテーブルはレプリケートされません。
実行するものを選択するオプション#
-b, --builtin=NAME[@W]— Wで重み付けされたビルトインスクリプトNAMEを追加します。デフォルトは1です。-b listを使用して、使用可能なスクリプトをリストします。-f, --file=FILENAME[@W]— Wで重み付けスクリプトFILENAMEを追加します。デフォルトは1です。-N, --skip-some-updates— pgbench_tellersおよびpgbench_branchesの更新。-b simple-updateと同じ。-S, --select-only— SELECTのみのトランザクションを実行します。-b select-onlyと同じ。
ベンチマークオプション#
-c, --client=NUM— 同時データベースクライアントの数。デフォルトは1です。-C, --connect— トランザクションごとに新しい接続を確立します。-D, --define=VARNAME=VALUE— カスタムスクリプトで使用する変数を定義します。-j, --jobs=NUM— スレッドの数。デフォルトは1です。-l, --log— トランザクション時間をログファイルに書き込みます。-L, --latency-limit=NUM— NUMミリ秒を超えて続いたトランザクションを遅くまでカウントします。-m, --mode=regular|camo|failover— pgbenchを実行するモード。デフォルトはregularです。-M, --protocol=simple|extended|prepared— クエリーを送信するためのプロトコル。デフォルトはsimpleです。-n, --no-vacuum— テストの前にVACUUMを実行しないでください。-o, --set-option=NAME=VALUE— ランタイムSETオプションを指定します。-P, --progress=NUM— NUM秒ごとにスレッドの進行状況レポートを表示します。-r, --report-per-command—コマンドごとのレイテンシー、失敗、および再試行。-R, --rate=NUM— 1秒ごとのトランザクションのターゲットレート。-s, --scale=NUM—このスケール係数を出力で報告します。-t, --transactions=NUM—各クライアントが実行するトランザクションの数。デフォルトは10です。-T, --time=NUM— ベンチマークテストの時間秒単位。-v, --vacuum-all— テストの前に4つの標準テーブルすべてをバキュームします。--aggregate-interval=NUM— NUM秒以上のデータ。--failures-detailed—基本的なタイプごとにグループ化された障害をレポートします。--log-prefix=PREFIX— トランザクション時間ログファイルの接頭辞。デフォルトはpgbench_logです。--max-tries=NUM— トランザクションを実行しようとする最大試行回数。デフォルトは1です。--progress-timestamp— 進行状況にUnixエポックタイムスタンプを使用します。--random-seed=SEED— ランダムシードtime、rand、integerを設定します。--retry— フェイルオーバー時にトランザクションを再試行します。-mとともに使用されます。--sampling-rate=NUM— ログに記録するトランザクションの割合、たとえば、1%の場合0.01。--show-script=NAME— ビルトインスクリプトコードを表示して、終了します。--verbose-errors— すべてのエラーのメッセージを出力します。
共通オプション#
-d, --debug— デバッグ出力を印刷します。-h, --host=HOSTNAME— データベースサーバーホストまたはソケットディレクトリ。-p, --port=PORT— データベースサーバーのポート番号。-U, --username=USERNAME— 指定されたデータベースユーザーとして接続します。-V, --version—バージョン情報を出力して、終了します。-?, --help— ヘルプを表示して、終了します。