🎉

HammerDBによるOracleベンチマーク

2022/12/13に公開

目的

Oracleデータベース向けに何か手頃なベンチマークツールがないか探していたところ HammerDB という TPC-CやTPC-H 等汎用的なワークロードが流せるツールがあることを知ったのでメモ

早速使ってみる

前提として ORACLE_HOME 環境変数以下のライブラリを使うみたいなのでリモート接続するにしてもOracleクライアントライブラリがインストールされているサーバーに配置する方が良さそう。ライブラリ込みのDocker イメージを使った方が効率的だと思われる。
https://www.hammerdb.com/docs/ch01s09.html
https://hub.docker.com/r/tpcorg/hammerdb-v4.5

ダウンロード(Docker イメージ使わない場合)

rm -rf HammerDB-4.4 HammerDB-4.4-Linux.tar.gz
wget https://github.com/TPC-Council/HammerDB/releases/download/v4.4/HammerDB-4.4-Linux.tar.gz
tar xzvf HammerDB-4.4-Linux.tar.gz

事前にOracleに必要な表領域を作っておく&TPCCユーザーは削除

sqlplus admin/P#ssw0rd@xxxxx:1521/orcl << EOF
drop tablespace tpcc including contents;
drop tablespace tpch including contents;
drop tablespace temp1;
create bigfile tablespace TPCC datafile size 1G autoextend on;
create bigfile tablespace TPCH datafile size 1G autoextend on;
create bigfile temporary tablespace TEMP1 tempfile size 1G autoextend on;
drop user TPCC cascade;
drop user TPCH cascade;
EOF

HammerDB CLI 起動

./hammerdbcli 

Oracle 向けのセットアップ

TPC-C(OLTP)

dbset db ora
dbset bm TPC-C
diset connection system_user admin
diset connection system_password P#ssw0rd
diset connection instance xxxxx:1521/ORCL
diset tpcc tpcc_user tpcc
diset tpcc tpcc_pass P#ssw0rd
diset tpcc tpcc_def_tab tpcc
diset tpcc tpcc_ol_tab tpcc
diset tpcc tpcc_def_temp temp1
diset tpcc total_iterations 100000
diset tpcc rampup 2
diset tpcc duration 5
diset tpcc ora_timeprofile true
print dict
  • diset connection で接続先指定
  • diset tpcc で表領域を指定
  • total_iterations はトランザクション数

TPC-H(DWH)

dbset db ora
dbset bm TPC-H
diset connection system_user admin
diset connection system_password P#ssw0rd
diset connection instance xxxxx:1521/ORCL
diset tpch scale_fact 1
diset tpch tpch_user tpch
diset tpch tpch_pass P#ssw0rd
diset tpch tpch_def_tab tpch
diset tpch tpch_def_temp temp1
print dict
  • scale_fact
    • データサイズの規模を指定。https://www.hammerdb.com/docs/ch12s03.html
    • The Scale Factor is selected by a radio button with a choice of scale factors of 1,10,30,100,300 and 1000 corresponding to 1GB, 10GB, 30GB,100GB and 1000GB respectively, larger schema sizes can also be created with the datagen option. Note that the required space will be larger than these values due to the indexes required.

スキーマ構築

buildschema
vustatus
vudestroy
  • buildschema でスキーマ作成。非同期でコマンド自体は終了しバックでデータの作成を行なっていてその旨出力されるので終わるまで待つこと
  • vudestroy HammerDB 管理上の仮想ユーザー(vu)が作成されてしまうので一度クリア

ワークロード実行前

print vuconf
vuset vu 10
vuset logtotemp 1
vuset showoutput 1
vuset unique 1
vuset timestamps 1
print vuconf
  • vuset vu x 仮想ユーザー数指定。この数のクライアントが同時にアクセスしにいくイメージ

ワークロード実行

loadscript
vucreate
vustatus
vurun
  • vucreate 仮想ユーザー作成
  • vurun ワークロード実行

CLI ハングして面倒な時はこれ

pkill tclsh8.6

Discussion