tombo2-progress’s diary

できるだけ毎日1時間を切り取ってここに晒す。誤字脱字気にしない。日本語が崩壊するのも気にしない。最終的にまとめて本ブログに書く

TPC-Cのベンチマークがどんなものか見る

sysbench-tpccでどんなschemaにどんなクエリが流れているのか調べる

同じくPercona-Labが出しているものに、tpcc-mysqlもあるけど、sysbench-tpccのほうが最近までcommitがあるのでこちらを使うことにする。 sysbench-tpccはドキュメントないっぽい、公式ブログもREADME程度のことしか書いてない。 https://www.percona.com/blog/2018/03/05/tpcc-like-workload-sysbench-1-0/

sysbench-tpcc

リポジトリMySQLのベンチマークツール: tpcc-mysql と sysbench-tpcc の紹介 見て

  • コマンド、オプション把握する
  • prepareしてschema見る
  • 実行してslow-queryからクエリを見てみる

install

# install
git clone https://github.com/Percona-Lab/tpcc-mysql.git
cd tpcc-mysql/src
make
# prepare schema
mysql -u root -p -e "create database tpcc"
mysql -u root -p tpcc < create_table.sql
mysql -u root -p tpcc < add_fkey_idx.sql

f:id:tom__bo:20180625225535p:plain

図を見て思い出したけど、TPC-Cベンチマークは在庫管理・注文履歴を含めた発注システムをモデルにしたベンチマークだからweb系のシステムのベンチマークには向かないかも。

http://hp.vector.co.jp/authors/VA052413/jdbcrunner/manual_ja/tpc-c.html 良い説明

warehouse : 倉庫を表しています。このテーブルのレコード数がデータベース全体の規模を決めるスケールファクタになっています。
district : 配送区域を表しています。倉庫あたり10の配送区域があります。
customer : 顧客を表しています。配送区域あたり3,000の顧客がいます。
history : 支払い履歴を表しています。初期値として顧客あたり1件の支払い履歴があり、支払いを行うと増加していきます。
item : 商品を表しています。このテーブルのレコード数は10万で固定されています。
stock : 在庫を表しています。倉庫あたり10万の在庫データを持っています。
orders : 注文を表しています。初期値として顧客あたり1つの注文があり、注文を行うと増加していきます。
order_line : 注文明細を表しています。注文あたり平均10件の注文明細が作られます。
new_orders : 未配送の新規注文を表しています。初期値として30%の顧客が1件ずつ未配送の新規注文を抱えており、注文を行うと増加し、配送が行われると減少します。
TPC-Cでは5種類のトランザクションが定義されています。5種類のトランザクションの実行比率は10:10:1:1:1となっています。

New-Order : 注文処理です。
Payment : 支払い処理です
Order-Status : 注文状況を確認する処理です。
Delivery : 配送処理です。
Stock-Level : 在庫状況を確認する処理です。

上記リンク参照。[f:id:tombo:20180625225535p:plain][f:id:tombo:20180625225541p:plain] リンク先にSQLでのトランザクション内容がある。

これらの5角トランザクションが順に10:10:1:1:1らしいので、やはりread heavyというのは難しい。(3つ目だけが純粋にselect文。) バランスを変えても良いけど、それだとtpc-cの意味がないので、他のTPC系のベンチメークを模索してみる。

installしちゃったし、今後一応これでベンチマークも取ってみる。 DBの論文でもベンチマークTPC-Cが使われることは多いと思うので、Mysqlでどこまでできるのかは気になる。

TPC 公式見る

http://www.tpc.org/

f:id:tom__bo:20180625225541p:plain って感じらしいので、TPC-Eあたりかと思ったが違う

http://d.hatena.ne.jp/sh2/20100510

適当なpcだと1TPSもでないとかすごい。証券世界どうなってるんだろう。

percona-benchworkによってベンチマーク割と簡単にできるらしいけど、これもドキュメントあるのか怪しい。

https://launchpad.net/percona-benchwork

ここで1時間立ったので、次回はwebサービスのワークロードにあうベンチマークがないか探す