pgbench使用方法

  • LINEで送る

pgbenchとは

postgresqlのベンチマークツールで、postgresqlのパフォーマンスを計測できます。
postgresqlをチューニングする際に、とても役に立ちます。

使用方法

以下、コマンドラインで作業

1.postgresqlをインストール

こではバージョン9.4をインストールしました。
インストール情報はこちら
※postgresql9.4ではpgbenchが既にインストールされている状態ですので、個別でインストールする必要はありません。

2.postgresqlのスーパユーザアカウントでログイン

$ su - postgres

3.sqlを使用できるツールpsqlを起動

$ psql -U postgres

4.テスト用のデータベースを作成

ここでは「test」という名称のDBを作成しました。CREATE DATABASEと表示されればOKです。

postgres=# create database test;
CREATE DATABASE

5.psqlを¥qで終了する

$ ¥q

6.以下コマンドを実行し、ベンチマークデータを初期化する

$ pgbench -i test

実行履歴

NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
creating tables...
100000 of 100000 tuples (100%) done (elapsed 0.64 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

んっ、失敗・・・?
もう一回同じコマンドを実行

実行履歴

creating tables...
100000 of 100000 tuples (100%) done (elapsed 0.70 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

成功したぽい
ひとまず次へ進んでみよう・・・

7.以下コマンドでベンチマーク実行

pgbench -c 2 -t 100 test

実行結果

starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average: 0.000 ms
tps = 187.624829 (including connections establishing)
tps = 199.760088 (excluding connections establishing)

実行できました。
初期化を2回実行しましたが、1回目の初期化で成功してたみたいでした。

コマンドの説明
「-c 2」:同時に2本の接続
「-t 100」:各接続で100本のトランザクションを実行
「test」:データベースの指定

実行結果
「number of transactions actually processed: 200/200」:2本の接続×100本のトランザクション=200回中、200回正常に実行できたことを示しています。
「tps = 187.624829 (including connections establishing)」:1秒間に実行できたトランザクション数(PostgreSQLへの接続含む)
「tps = 199.760088 (excluding connections establishing)」:1秒間に実行できたトランザクション数(PostgreSQLへの接続含まない)
※tpsは数値が高いほど性能が良いです。

pgbenchがデフォルトで実行する1トランザクションのSQLは以下です。

a.pgbench_accountsを1件更新
b.pgbench_accountsから1件検索
c.pgbench_tellersを1件更新
d.pgbench_branchesを1件更新
e.pgbench_historyに1件行を追加

以下オプションを付けることでデフォルトの実行SQLを制御できます。
「-N」
cとdを除いたSQLを実行します。
pgbench -c 2 -t 100 -N test

「-S」
更新処理を除いたSQLを実行します。
pgbench -c 2 -t 100 -S test

次回は、pgbenchで計測しながら実際にチューニングを行っていきたいと思います。

SNSでもご購読できます。

コメントを残す

*

CAPTCHA