Testing and tuning commands
===========================

EDB Postgres
Distributedには、PGDクラスターのテストと調整に役立つツールが含まれています。バックグラウンドについては、
:ref:`Postgres Distributed terminology <Postgres Distributed terminology>`  を参照してください。

pgd_bench
---------

概要
^^^^

EDB Postgres分散展開のベンチマークツール。

.. code:: shell

   pgd_bench [OPTION]... [DBNAME] [DBNAME2]

``DBNAME``
は、次のフォーマットのconninfo文字列です。\ ``"host=10.1.1.2 user=postgres dbname=master"``

pgd_benchのオプションと使用例については、
:ref:`pgd_bench in Testing and tuning <Testing and tuning PGD clusters>` を参照してください。

オプション
^^^^^^^^^^

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 <https://www.postgresql.org/docs/current/sql-set.html>`_ コマンドを使用して適用されます。

他のオプションはPostgres pgbenchコマンドと同じです。詳細については、
PostgreSQL 
`pgbench <https://www.postgresql.org/docs/current/pgbench.html>`_ ドキュメントを参照してください。

オプション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`` — ヘルプを表示して、終了します。
