GoGPT Best VPN GoSearch

OnWorksファビコン

pgbench-クラウドでのオンライン

Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、またはMACOSオンラインエミュレーターを介してOnWorks無料ホスティングプロバイダーでpgbenchを実行します

これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドpgbenchです。

プログラム:

NAME


pgbench-PostgreSQLでベンチマークテストを実行します

SYNOPSIS


pgベンチ -i [オプション...] [データベース名]

pgベンチ [オプション...] [データベース名]

DESCRIPTION


pgbenchは、PostgreSQLでベンチマークテストを実行するためのシンプルなプログラムです。 それは同じように実行されます
おそらく複数の同時データベースセッションでのSQLコマンドのシーケンス
次に、平均トランザクションレート(XNUMX秒あたりのトランザクション数)を計算します。 デフォルトでは、
pgbenchは、TPC-Bに大まかに基づいており、XNUMXつを含むシナリオをテストします。 SELECT, UPDATE,
  INSERT トランザクションごとのコマンド。 ただし、書くことで他のケースをテストするのは簡単です
独自のトランザクションスクリプトファイル。

pgbenchからの一般的な出力は次のようになります。

トランザクションタイプ:TPC-B(一種)
スケーリング係数:10
クエリモード:シンプル
クライアント数:10
スレッド数:1
クライアントあたりのトランザクション数:1000
実際に処理されたトランザクションの数:10000/10000
tps = 85.184871(接続の確立を含む)
tps = 85.296346(接続の確立を除く)

最初のXNUMX行は、最も重要なパラメーター設定のいくつかを報告しています。 次の行
完了して意図されたトランザクションの数を報告します(後者は単なる
クライアント数とクライアントあたりのトランザクション数の積); これらは等しくなります
実行が完了する前に失敗しない限り。 (の -T モード、実際の数のみ
トランザクションが出力されます。)最後のXNUMX行は、XNUMX秒あたりのトランザクション数を報告します。
データベースセッションを開始する時間をカウントする場合としない場合を計算しました。

デフォルトのTPC-Bのようなトランザクションテストでは、事前に特定のテーブルを設定する必要があります。
pgbenchは、 -i これらを作成して入力する(初期化)オプション
テーブル。 (カスタムスクリプトをテストする場合、この手順は必要ありませんが、代わりに必要になります
テストに必要なセットアップを行う必要があります。)初期化は次のようになります。

pgbench -i [ 別のオプション ] データベース名

コラボレー データベース名 テストするために作成済みのデータベースの名前です(必要な場合もあります)
-h, -p、および/または -U データベースサーバーへの接続方法を指定するオプション。)

あぶない
pgbench -iは、XNUMXつのテーブルpgbench_accounts、pgbench_branches、pgbench_history、
およびpgbench_tellersは、これらの名前の既存のテーブルを破棄します。 非常に注意してください
これらの名前のテーブルがある場合は、別のデータベースを使用してください。

デフォルトの「スケールファクター」1では、テーブルには最初に次の数の行が含まれます。

テーブル行数
---------------------------------
pgbench_branches 1
pgbench_tellers 10
pgbench_accounts 100000
pgbench_history 0

を使用して行数を増やすことができます(そして、ほとんどの場合、おそらくそうすべきです)。
-s (スケールファクター)オプション。 The -F (fillfactor)オプションもこの時点で使用される可能性があります。

必要なセットアップが完了したら、次のコマンドを使用してベンチマークを実行できます。
含まれていません -i、 あれは

pgベンチ [ オプション ] データベース名

ほとんどすべての場合、有用なテストを行うためにいくつかのオプションが必要になります。 最も重要な
オプションは -c (クライアント数)、 -t (トランザクション数)、 -T (制限時間)、および -f
(カスタムスクリプトファイルを指定します)。 完全なリストについては、以下を参照してください。

OPTIONS


以下はXNUMXつのサブセクションに分かれています。
データベースの初期化とベンチマークの実行中、いくつかのオプションは両方で役立ちます
ケース。

初期化 オプション
pgbenchは、次のコマンドライン初期化引数を受け入れます。

-i
-初期化
初期化モードを呼び出すために必要です。

-F フィルファクター
--fillfactor =フィルファクター
pgbench_accounts、pgbench_tellers、およびpgbench_branchesテーブルを作成します。
与えられたfillfactor。 デフォルトは100です。

-n
--真空なし
初期化後にバキュームを実行しないでください。

-q
- 静かな
ロギングをクワイエットモードに切り替え、5秒ごとにXNUMXつの進行状況メッセージのみを生成します。 The
デフォルトのロギングでは、100000行ごとにXNUMXつのメッセージが出力され、多くの場合、多くの行が出力されます。
XNUMX秒あたり(特に優れたハードウェアの場合)。

-s スケール係数
--scale =スケール係数
スケールファクターによって生成された行数を乗算します。 たとえば、-s100は
pgbench_accountsテーブルに10,000,000行を作成します。 デフォルトは1です。スケールが
20,000以上の場合、アカウントIDを保持するために使用される列(補助列)は
範囲を保持するのに十分な大きさになるように、より大きな整数(bigint)の使用に切り替えます
アカウント識別子の。

--外部キー
標準テーブル間に外部キー制約を作成します。

--index-tablespace =インデックステーブルスペース
デフォルトの表領域ではなく、指定された表領域にインデックスを作成します。

--tablespace =表領域
デフォルトの表領域ではなく、指定された表領域に表を作成します。

--ログに記録されていないテーブル
すべてのテーブルを、永続テーブルではなく、ログに記録されていないテーブルとして作成します。

ベンチマーク オプション
pgbenchは、次のコマンドラインベンチマーク引数を受け入れます。

-c クライアント
--client =クライアント
シミュレートされたクライアントの数、つまり同時データベースセッションの数。 デフォルト
1です。

-C
- 接続
トランザクションごとにXNUMX回だけ行うのではなく、トランザクションごとに新しい接続を確立します
クライアントセッション。 これは、接続のオーバーヘッドを測定するのに役立ちます。

-d
- デバッグ
デバッグ出力を出力します。

-D 変数名=
--define =変数名=
カスタムスクリプトで使用する変数を定義します(以下を参照)。 多数 -D オプションは
ことができました。

-f ファイル名
--file =ファイル名
からトランザクションスクリプトを読む ファイル名。 詳細については、以下を参照してください。 -N, -S, -f  
相互に排他的。

-j スレッド
--jobs =スレッド
pgbench内のワーカースレッドの数。 複数のスレッドを使用すると、
マルチCPUマシン。 クライアントの数は、スレッドの数の倍数である必要があります。
各スレッドには、管理するクライアントセッションの数が同じであるためです。 デフォルトは1です。

-l
- ログ
各トランザクションにかかる時間をログファイルに書き込みます。 詳細については、以下を参照してください。

-L 制限
--latency-limit =制限
より長く続くトランザクション 制限 ミリ秒がカウントされ、報告されます
別々に、遅くまで。

スロットルを使用する場合(--rate=..。)、スケジュールよりも遅れているトランザクション
より 制限 ms、したがって遅延制限を満たす見込みがないため、に送信されません
まったくサーバー。 それらは、スキップされたものとして個別にカウントおよび報告されます。

-M クエリモード
-プロトコル=クエリモード
サーバーにクエリを送信するために使用するプロトコル:

・simple:単純なクエリプロトコルを使用します。

・拡張:拡張クエリプロトコルを使用します。

・プリペアド:プリペアドステートメントで拡張クエリプロトコルを使用します。

デフォルトは単純なクエリプロトコルです。 (第50章「フロントエンド/バックエンドプロトコル」を参照してください。
詳細については、ドキュメントを参照してください。)

-n
--真空なし
テストを実行する前に、真空引きを実行しないでください。 このオプションは 必要 あなたがいる場合
標準テーブルを含まないカスタムテストシナリオの実行
pgbench_accounts、pgbench_branches、pgbench_history、およびpgbench_tellers。

-N
--一部の更新をスキップ
pgbench_tellersとpgbench_branchesを更新しないでください。 これにより、更新の競合が回避されます
これらのテーブルでは、しかしそれはテストケースをTPC-Bのようにさらに少なくします。

-P ドライ
--progress =ドライ
進捗レポートをXNUMX秒ごとに表示します。 レポートには、
実行の開始、最後のレポート以降のtps、およびトランザクションの待機時間
前回のレポート以降の平均および標準偏差。 スロットル中(-R
レイテンシーは、トランザクションのスケジュールされた開始時間に関して計算されます。
実際のトランザクション開始時間。したがって、平均スケジュールラグも含まれます。
時間。

-r
--レポート-レイテンシ
ステートメントごとの平均レイテンシー(の観点からの実行時間)を報告します
ベンチマーク終了後の各コマンドのクライアント)。 詳細については、以下を参照してください。

-R
--rate =
できるだけ速く実行するのではなく、指定されたレートをターゲットにしてトランザクションを実行します
可能(デフォルト)。 レートはXNUMX秒あたりのトランザクション数で示されます。 対象の場合
レートが可能な最大レートを超えている場合、レート制限は結果に影響を与えません。

レートは、ポアソン分布のスケジュールに沿ってトランザクションを開始することによって目標とされます
タイムライン。 予想される開始時間のスケジュールは、クライアントがいつになるかに基づいて前に進みます
前のトランザクションが終了したときではなく、最初に開始されました。 そのアプローチは、
トランザクションは元のスケジュールされた終了時刻を過ぎます。それ以降のトランザクションは可能です。
再び追いつくために。

スロットリングがアクティブな場合、実行の最後に報告されるトランザクション遅延は次のようになります。
スケジュールされた開始時刻から計算されるため、各トランザクションの時刻が含まれます
前のトランザクションが終了するのを待たなければなりませんでした。 待機時間は
スケジュールの遅延時間、およびその平均と最大も別々に報告されます。 ザ
実際のトランザクション開始時間、つまり時間に対するトランザクション遅延
データベースでトランザクションの実行に費やされた、を差し引くことによって計算できます
報告されたレイテンシーからのスケジュールラグタイム。

If --レイテンシー制限 と一緒に使用されます - 割合、トランザクションは非常に遅れることがあります
前のトランザクションが終了したときに、すでにレイテンシ制限を超えていること。
待ち時間は、スケジュールされた開始時刻から計算されます。 そのような取引はそうではありません
サーバーに送信されますが、完全にスキップされ、個別にカウントされます。

スケジュールの遅延時間が長い場合は、システムがトランザクションを処理できないことを示しています。
指定されたレートで、選択された数のクライアントとスレッドを使用します。 平均時
トランザクションの実行時間が、それぞれの間のスケジュールされた間隔よりも長い
トランザクション、連続する各トランザクションはさらに遅れ、スケジュール
ラグタイムは、テストの実行時間が長くなるほど長くなり続けます。 それが起こるとき、あなたは
指定されたトランザクションレートを下げる必要があります。

-s スケール係数
--scale =スケール係数
pgbenchの出力で指定されたスケールファクターを報告します。 ビルトインテストで、これ
必要ありません。 正しいスケールファクターは、
pgbench_branchesテーブルの行。 ただし、カスタムベンチマークをテストする場合(-f
オプション)、このオプションを使用しない限り、スケール係数は1として報告されます。

-S
--選択のみ
TPC-Bのようなテストの代わりに、選択のみのトランザクションを実行します。

-t 取引
--transactions =取引
各クライアントが実行するトランザクションの数。 デフォルトは10です。

-T
--time =
XNUMX回あたりのトランザクション数を固定するのではなく、この数秒間テストを実行します
クライアント。 -t   -T 相互に排他的です。

-v
--すべてバキューム
テストを実行する前に、XNUMXつの標準テーブルすべてを掃除機で吸い取ります。 どちらもなし -n また -v,
pgbenchは、pgbench_tellersテーブルとpgbench_branchesテーブルをバキュームし、切り捨てます。
pgbench_history。

--aggregate-interval =
集約間隔の長さ(秒単位)。 -l-と一緒にのみ使用できます
このオプションの場合、ログには間隔ごとの要約(トランザクション数、最小/最大)が含まれます
待ち時間と分散推定に役立つXNUMXつの追加フィールド)。

このオプションは現在、Windowsではサポートされていません。

--sampling-rate =
ログの量を減らすためにログにデータを書き込むときに使用されるサンプリングレート
生成されます。 このオプションを指定すると、指定された割合のトランザクションのみが
ログに記録されます。 1.0はすべてのトランザクションがログに記録されることを意味し、0.05は
トランザクションはログに記録されます。

ログファイルを処理するときは、サンプリングレートを考慮することを忘れないでください。 にとって
たとえば、tps値を計算するときは、それに応じて数値を乗算する必要があります(たとえば、
0.01サンプルレートでは、実際のtpsの1/100しか得られません)。

コマンドと オプション
pgbenchは、次のコマンドライン共通引数を受け入れます。

-h hostname
--host =hostname
データベースサーバーのホスト名

-p ポート
--port =ポート
データベースサーバーのポート番号

-U ログイン
--username =ログイン
接続するユーザー名

-V
- バージョン
pgbenchバージョンを印刷して終了します。

-?
- 助けて
pgbenchコマンドライン引数に関するヘルプを表示し、終了します。

注意事項


この試験は is   "取引" クリエイティブを 実行済み in pgbench?
デフォルトのトランザクションスクリプトは、トランザクションごとにXNUMXつのコマンドを発行します。

1.開始;

2. pgbench_accounts SET abalance = abalance +:delta WHERE aid =:aid;を更新します。

3. pgbench_accounts WHERE aid =:aid;からabalanceを選択します。

4. pgbench_tellers SET tbalance = tbalance +:delta WHERE tid =:tid;を更新します。

5. pgbench_branches SET bbalance = bbalance +:delta WHERE bid =:bid;を更新します。

6. pgbench_history(tid、bid、aid、delta、mtime)の値(:tid、:bid、:aid、
:delta、CURRENT_TIMESTAMP);

7.終了;

指定した場合 -N、ステップ4と5はトランザクションに含まれていません。 指定した場合 -S,
のみ SELECT 発行されます。

カスタム スクリプト
pgbenchは、デフォルトを置き換えることにより、カスタムベンチマークシナリオの実行をサポートしています
ファイルから読み取られたトランザクションスクリプト(上記)を使用したトランザクションスクリプト(上記)-f
オプション)。 この場合、「トランザクション」はスクリプトファイルのXNUMX回の実行としてカウントされます。 あなたはできる
複数のスクリプトを指定することもできます(複数 -f オプション)、この場合、ランダムなもの
スクリプトは、クライアントセッションが新しいトランザクションを開始するたびに選択されます。

スクリプトファイルの形式は、XNUMX行にXNUMXつのSQLコマンドです。 複数行のSQLコマンドは
サポートされています。 空の行と--で始まる行は無視されます。 スクリプトファイルの行も
以下に説明するように、pgbench自体によって解釈される「メタコマンド」である。

スクリプトファイルには、単純な変数置換機能があります。 変数は次の方法で設定できます
コマンドライン -D 上記で説明されているオプション、または以下で説明されているメタコマンドによって。 の
によって事前設定された変数への追加 -D コマンドラインオプション、いくつかの変数があります
これらは自動的に事前設定され、表221「自動変数」にリストされています。 価値
を使用してこれらの変数に指定 -D 自動プリセットよりも優先されます。 一度
設定すると、変数の値を次のように記述してSQLコマンドに挿入できます。変数名。 時
複数のクライアントセッションを実行している場合、各セッションには独自の変数のセットがあります。

221. オートマチック variables
┌──────────┬────────────────────────────────┐
変数 詳細説明
├──────────┼────────────────────────────────┤
│スケール│現在のスケールファクター│
├──────────┼────────────────────────────────┤
│client_id││を識別する一意の番号
││クライアントセッション(│から開始
││ゼロ)│
└──────────┴────────────────────────────────┘

スクリプトファイルのメタコマンドは、円記号(\)で始まります。 メタコマンドの引数は次のとおりです。
空白で区切られています。 これらのメタコマンドがサポートされています。

\セットする 変数名 表現
変数を設定します 変数名 から計算された整数値に 表現。 表現
5432、変数への参照などの整数定数を含めることができます。変数名,
単項(-)または二項演算子(+、-、*、/、%)で構成される式と通常の式
結合性、および括弧。

例:

\ set ntellers 10 *:scale
\ set aid(1021 *:aid)%(100000 *:scale)+ 1

\ setrandom 変数名 マックス 【制服| {ガウス| 指数} パラメーター ]
変数を設定します 変数名 制限間のランダムな整数値に   マックス
包括的。 各制限は、整数定数または:のいずれかになります。変数名 参照
整数値を持つ変数に。

デフォルトで、または均一が指定されている場合、範囲内のすべての値は等しい値で描画されます
確率。 ガウスまたは指数オプションを指定すると、この動作が変更されます。 各
分布の正確な形状を決定する必須パラメーターが必要です。

ガウス分布の場合、区間は標準正規分布にマッピングされます
分布(古典的なベル型のガウス曲線)は、
左と右の+パラメータ。 間隔の中央にある値の可能性が高くなります
描かれる。 正確には、PHI(x)がの累積分布関数である場合
標準正規分布、平均ミューは(max + min)/ 2.0として定義され、

f(x)= PHI(2.0 *パラメーター*(x --mu)/(max --min + 1))/
(2.0 * PHI(パラメーター)-1.0)

次に値 i の間に   マックス 包括的は確率で描かれます:f(i + 0.5)-f(i
-0.5)。 直感的に、大きい パラメーター、より頻繁に値に近い
間隔の中央が描画され、頻度の低い値は  
マックス 境界。 値の約67%は、中央の1.0 /パラメーターから取得されます。つまり、
平均の周りの相対的な0.5/パラメータ、および中央の95 /パラメータの2.0%、
平均の周りの相対的な1.0/パラメータです。 たとえば、 パラメーター 4.0、67%
値のは、間隔の中央の1.0分の4.0(3.0 / XNUMX)から(つまり、XNUMXから)描画されます
/ 8.0〜5.0 / 8.0)および間隔の中央半分(95 / 2.0)から4.0%(秒
および第XNUMX四分位数)。 最小値の パラメーター Box-Mullerのパフォーマンスは2.0です。
変換します。

指数分布の場合、 パラメーター 切り捨てることによって配布を制御します
で急速に減少する指数分布 パラメーター、次にに投影
境界間の整数。 正確には、

f(x)= exp(-パラメータ*(x-最小)/(最大-最小+ 1))/(1.0-exp(-パラメータ))

次に値 i の間に   マックス 包括的は確率で描かれます:f(x)-f(x + 1)。
直感的に、大きい パラメーター、より頻繁に値に近い  
アクセスされ、頻度の低い値に近い マックス アクセスされます。 0に近い
パラメーター、よりフラットな(より均一な)アクセス分布。 大まかな概算
分布のは、範囲内で最も頻繁な1%の値であり、 ,
描かれています パラメーター時間の%。 パラメーター 値は厳密に正でなければなりません。

例:

\ setrandom aid 1:naccounts gaussian 5.0

\睡眠 [私たち| ms | s]
スクリプトの実行をマイクロ秒(us)単位で指定された期間スリープさせます。
ミリ秒(ms)または秒(s)。 単位を省略すると、秒がデフォルトになります。
整数定数または:のいずれかです。変数名 変数への参照
整数値を持つ。

例:

\ sleep 10 ms

\ setshell 変数名 command [ 引数 ...]
変数を設定します 変数名 シェルコマンドの結果に command。 コマンドは
標準出力を介して整数値を返します。

引数 テキスト定数または:のいずれかです。変数名 の変数への参照
任意のタイプ。 使用したい場合 引数 コロンから始めて、追加する必要があります
の先頭に追加のコロン 引数.

例:

\ setshell variable_to_be_assignedコマンドliteral_argument:variable ::literal_starting_with_colon

\シェル command [ 引数 ...]
\ setshellと同じですが、結果は無視されます。

例:

\ shellコマンドliteral_argument:variable ::literal_starting_with_colon

例として、組み込みのTPC-Bのようなトランザクションの完全な定義は次のとおりです。

\ set nbranches:scale
\ set ntellers 10 *:scale
\ set naccounts 100000 *:scale
\ setrandom aid 1:naccounts
\ setrandom bid 1:nbranches
\ setrandom tid 1:ntellers
\ setrandom delta -5000 5000
始める;
UPDATE pgbench_accounts SET abalance = abalance +:delta WHERE aid =:aid;
SELECT abalance FROM pgbench_accounts WHERE aid =:aid;
UPDATE pgbench_tellers SET tbalance = tbalance +:delta WHERE tid =:tid;
UPDATE pgbench_branches SET bbalance = bbalance +:delta WHERE bid =:bid;
INSERT INTO pgbench_history(tid、bid、aid、delta、mtime)VALUES(:tid、:bid、:aid、:delta、CURRENT_TIMESTAMP);
終わり;

このスクリプトを使用すると、トランザクションの各反復で異なる参照を行うことができます。
ランダムに選択された行。 (この例は、各クライアントセッションにとって重要である理由も示しています
独自の変数を持つために—そうでなければ、それらは独立して異なるものに触れないでしょう
行。)

トランザクションごと ロギング
-l オプションですが、 --集計間隔、pgbenchはによってかかった時間を書き込みます
ログファイルへの各トランザクション。 ログファイルの名前はpgbench_logになります。NNNここで、 NNN is
pgbenchプロセスのPID。 の場合 -j オプションが2以上で、複数のワーカーを作成する
スレッドには、それぞれ独自のログファイルがあります。 最初のワーカーは同じ名前を使用します
標準のシングルワーカーの場合と同様にログファイル。 他の追加のログファイル
ワーカーにはpgbench_logという名前が付けられます。NNN.MMMここで、 MMM それぞれの連番です
1から始まるワーカー。

ログの形式は次のとおりです。

client_idの トランザクション番号 時間 ファイル番号 時間エポック time_us [スケジュール_ラグ]

コラボレー 時間 は、マイクロ秒単位の合計経過トランザクション時間です。 ファイル番号 どれを識別する
スクリプトファイルが使用されました(複数のスクリプトがで指定された場合に便利です -f)、及び
時間エポック/time_us Unixエポック形式のタイムスタンプとマイクロ秒単位のオフセットです
(秒単位のISO 8601タイムスタンプの作成に適しています)
トランザクションが完了しました。 分野 スケジュール_ラグ トランザクションの違いです
スケジュールされた開始時刻、および実際に開始された時刻(マイクロ秒単位)。 それだけです
存在するとき - 割合 オプションが使用されます。 最後のフィールド スキップされたトランザクション レポート
スケジュールより大幅に遅れたためにスキップされたトランザクションの数。 それだけです
両方のオプションが存在する場合 - 割合   --レイテンシー制限 使用されています。

生成されたログファイルのスニペットは次のとおりです。

0 199 2241 0 1175850568 995598
0 200 2465 0 1175850568 998079
0 201 2513 0 1175850569 608
0 202 2038 0 1175850569 2663

--rate=100および--latency-limit=5の別の例(追加の スケジュール_ラグ
桁):

0 81 4621 0 1412881037 912698 3005
0 82 6173 0 1412881037 914578 4304
0スキップ83 0
0スキップ83 0
0 83 4722 0 1412881037 916203 3108
0 84 4142 0 1412881037 918023 2333
0 85 2465 0 1412881037 919759 740

この例では、レイテンシ(82ミリ秒)が6.173を超えていたため、トランザクション5が遅れました。
ミリ秒制限。 次のXNUMXつのトランザクションは、以前にすでに遅れていたため、スキップされました。
彼らも始められました。

多くのトランザクションを処理できるハードウェアで長いテストを実行する場合、ログファイル
非常に大きくなる可能性があります。 ザ --サンプリングレート オプションを使用して、ランダムなサンプルのみをログに記録できます
トランザクションの。

集約 ロギング
--集計間隔 オプションの場合、ログは少し異なる形式を使用します。

間隔の開始 トランザクション数 レイテンシーサム レイテンシ_2_sum min_latency max_latency [ラグサム ラグ_2_合計 min_lag max_lag [スキップされたトランザクション]]

コラボレー 間隔の開始 間隔の開始(Unixエポック形式のタイムスタンプ)であり、
トランザクション数 間隔内のトランザクションの数です。 レイテンシーサム  
レイテンシーの合計(平均レイテンシーを簡単に計算できるように)。 次のXNUMXつのフィールドは
分散推定に役立ちます- レイテンシーサム レイテンシと レイテンシ_2_sum  
レイテンシーの2乗の合計。 最後のXNUMXつのフィールドは min_latency -最小レイテンシ
間隔内で、そして max_latency -間隔内の最大遅延。 トランザクション
コミットされた間隔にカウントされます。 最後のフィールド、 ラグサム,
ラグ_2_合計, min_lag, max_lag、が存在するのは - 割合 オプションが使用されます。 非常に
最後の一つ、 スキップされたトランザクション、オプションが存在する場合にのみ存在します --レイテンシー制限 存在します、
それも。 これらは、各トランザクションが前のトランザクションを待機する必要があった時間から計算されます
終了する、つまり、各トランザクションのスケジュールされた開始時間と
それが実際に始まった時間。

出力例は次のとおりです。

1345828501 5601 1542744 483552416 61 2573
1345828503 7884 1979812 565806736 60 1479
1345828505 7208 1979422 567277552 59 1391
1345828507 7685 1980268 569784714 60 1398
1345828509 7073 1979779 573489941 236 1411

プレーンな(集約されていない)ログファイルにはカスタムスクリプトのインデックスが含まれていることに注意してください
ファイルの場合、集約されたログはそうではありません。 したがって、スクリプトごとのデータが必要な場合は、次のことを行う必要があります。
自分でデータを集約します。

ステートメントごと レイテンシ
-r オプションの場合、pgbenchは各ステートメントの経過トランザクション時間を収集します
すべてのクライアントによって実行されます。 次に、これらの値の平均を報告します。
ベンチマークが終了した後の、各ステートメントのレイテンシ。

デフォルトのスクリプトの場合、出力は次のようになります。

掃除機を開始しています...終了します。
トランザクションタイプ:TPC-B(一種)
スケーリング係数:1
クエリモード:シンプル
クライアント数:10
スレッド数:1
クライアントあたりのトランザクション数:1000
実際に処理されたトランザクションの数:10000/10000
tps = 618.764555(接続の確立を含む)
tps = 622.977698(接続の確立を除く)
ミリ秒単位のステートメントレイテンシ:
0.004386 \ set nbranches 1 *:scale
0.001343 \ set ntellers 10 *:scale
0.001212 \ set naccounts 100000 *:scale
0.001310 \ setrandom aid 1:naccounts
0.001073 \ setrandom bid 1:nbranches
0.001005 \ setrandom tid 1:ntellers
0.001078 \ setrandom delta -5000 5000
0.326152 開始;
0.603376 UPDATE pgbench_accounts SET abalance = abalance +:delta WHERE aid =:aid;
0.454643 SELECT abalance FROM pgbench_accounts WHERE aid =:aid;
5.528491 UPDATE pgbench_tellers SET tbalance = tbalance +:delta WHERE tid =:tid;
7.335435 UPDATE pgbench_branches SET bbalance = bbalance +:delta WHERE bid =:bid;
0.371851 INSERT INTO pgbench_history(tid、bid、aid、delta、mtime)VALUES(:tid、:bid、:aid、:delta、CURRENT_TIMESTAMP);
1.212976終了;

複数のスクリプトファイルが指定されている場合、平均はそれぞれについて個別に報告されます
スクリプトファイル。

ステートメントごとのレイテンシに必要な追加のタイミング情報を収集することに注意してください
計算により、いくらかのオーバーヘッドが追加されます。 これにより、平均実行速度が遅くなり、
計算されたTPS。 速度低下の量は、プラットフォームと
ハードウェア。 レイテンシレポートを有効にした場合と無効にした場合の平均TPS値の比較は
タイミングオーバーヘッドが重要であるかどうかを測定するための良い方法。

グッド プラクティス
pgbenchを使用して、完全に無意味な数値を生成するのは非常に簡単です。 ここにあるいくつかの
有用な結果を得るのに役立つガイドライン。

そもそも、 決して ほんの数秒で実行されるテストを信じてください。 使用 -t or
-T ノイズを平均化するために、実行を少なくとも数分持続させるオプション。 いくつかの
再現可能な数値を取得するのに何時間もかかる場合があります。 試してみることをお勧めします
テストを数回実行して、番号が再現可能かどうかを確認します。

デフォルトのTPC-Bのようなテストシナリオの場合、初期化スケールファクター(-s) する必要があります
少なくとも、テストする予定のクライアントの最大数と同じ数(-c); そうでなければあなたは
主に更新の競合を測定しています。 しかありません -s pgbench_branchesの行
テーブル、およびすべてのトランザクションはそれらのXNUMXつを更新したいので、 -c を超える値 -s
間違いなく、多くのトランザクションがブロックされ、他のトランザクションを待機することになります。

デフォルトのテストシナリオは、テーブルからの経過時間にも非常に敏感です。
初期化されました:テーブル内のデッド行とデッドスペースの蓄積により、
結果。 結果を理解するには、更新の総数を追跡し、
真空引きが発生したとき。 自動真空が有効になっていると、予期しない変化が発生する可能性があります。
測定されたパフォーマンス。

pgbenchの制限は、テストしようとするとそれ自体がボトルネックになる可能性があることです。
多数のクライアントセッション。 これは、別の場所でpgbenchを実行することで軽減できます。
データベースサーバーからのマシン。ただし、ネットワーク遅延を低くすることが不可欠です。 かもしれない
複数のクライアントマシンで複数のpgbenchインスタンスを同時に実行する場合でも便利です。
同じデータベースサーバーに対して。

onworks.netサービスを使用してオンラインでpgbenchを使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。