「Oltpbenchmark」:修訂間差異
跳至導覽
跳至搜尋
(未顯示同一使用者於中間所作的 11 次修訂) | |||
第1行: | 第1行: | ||
{{Lowercase}} | {{Lowercase}} | ||
'''oltpbenchmark'''是一套[[Java]]寫的資料庫效能測試程式。 | '''oltpbenchmark'''是一套[[Java]]寫的資料庫效能測試程式。 | ||
== 環境 == | |||
這篇所提到的設定主要是在Ubuntu 18.04下的[[Kubernetes]]([[Docker]])內的情境。 | |||
== 安裝 == | == 安裝 == | ||
先 | 先安裝並且設定需要的軟體: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install -y ant default-jdk openjdk-8-jdk git locales tzdata | sudo apt install -y ant default-jdk openjdk-8-jdk git locales tzdata | ||
update-alternatives --config java | |||
# Use Java 8 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
編譯: | 取得並且編譯: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd ~ | |||
git clone https://github.com/oltpbenchmark/oltpbench.git | |||
cd ~/oltpbench | cd ~/oltpbench | ||
ant clean | ant clean | ||
第42行: | 第50行: | ||
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true | ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true | ||
# | # Filter rate data only: | ||
cd ~/oltpbench | cd ~/oltpbench | ||
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true | grep 'Rate limited' | ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true | grep --line-buffered 'Rate limited' | ||
# Do benchmark 100 times: | # Do benchmark 100 times: | ||
cd ~/oltpbench | cd ~/oltpbench | ||
for i in {1..100}; do | for i in {1..100}; do | ||
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep 'Rate limited' | ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep --line-buffered 'Rate limited' | ||
done | done | ||
第55行: | 第63行: | ||
cd ~/oltpbench | cd ~/oltpbench | ||
(for i in {1..100}; do | (for i in {1..100}; do | ||
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep 'Rate limited' | ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep --line-buffered 'Rate limited' | ||
done) | awk '{sum += $(NF - 1); print $(NF - 1)} END {print sum / NR}' | done) | awk '{sum += $(NF - 1); print $(NF - 1)} END {print sum / NR}' | ||
# Brute-force to run all cases: | |||
echo 2 4 8 16 32 64 128 256 512 768 | xargs -n1 | xargs -n1 -I% bash -c "sed -i -e 's/<terminals>[0-9]*/<terminals>%/' config/tpcc.xml; echo %; (for i in {1..100}; do ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep 'Rate limited'; done) | awk '{sum += \$(NF - 1)} END {print sum / NR}'" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== 調整 == | |||
在<code>tpcc.xml</code>內的<code>terminals</code>參數可以調整,以產生足夠多的client模擬測試。 | |||
== 其他 == | == 其他 == | ||
如果測試[[CockroachDB]]時,會因為CockroachDB不支援<code>CONSTRAINT</code>指到沒有index的欄位,會需要修 | === CockroachDB === | ||
{{See also|CockroachDB}} | |||
如果以[[PostgreSQL]]的界面測試[[CockroachDB]]時,會因為CockroachDB不支援<code>CONSTRAINT</code>指到沒有index的欄位,會需要修改PostgreSQL產生表格時的設定,並且重新編譯: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd ~/oltpbench | cd ~/oltpbench | ||
sed -i -e 's/^ALTER TABLE /-- ALTER TABLE/' src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-postgres-ddl.sql | |||
# Then rebuild oltpbenchmark: | # Then rebuild oltpbenchmark: | ||
第71行: | 第90行: | ||
ant clean | ant clean | ||
ant | ant | ||
</syntaxhighlight> | |||
另外CockroachDB只支援<code>SERIALIZE</code>模式,所以<code>tpcc.xml</code>內也修改成<code>TRANSACTION_SERIALIZABLE</code>: | |||
<syntaxhighlight lang="bash"> | |||
cd ~/oltpbench | |||
sed -i -e 's/TRANSACTION_READ_COMMITTED/TRANSACTION_SERIALIZABLE/' config/tpcc.xml | |||
</syntaxhighlight> | </syntaxhighlight> | ||
於 2018年12月31日 (一) 20:25 的最新修訂
oltpbenchmark是一套Java寫的資料庫效能測試程式。
環境
這篇所提到的設定主要是在Ubuntu 18.04下的Kubernetes(Docker)內的情境。
安裝
先安裝並且設定需要的軟體:
sudo apt install -y ant default-jdk openjdk-8-jdk git locales tzdata
update-alternatives --config java
# Use Java 8
取得並且編譯:
cd ~
git clone https://github.com/oltpbenchmark/oltpbench.git
cd ~/oltpbench
ant clean
ant
設定
cd ~/oltpbench
cp config/tpcc_config_postgres.xml config/tpcc.xml
vim config/tpcc.xml
# Change "DBUrl", "username", and "password".
測試
先建立表格並且產生測試資料:
cd ~/oltpbench
./oltpbenchmark -b tpcc -c config/tpcc.xml --create=true
./oltpbenchmark -b tpcc -c config/tpcc.xml --load=true
實際測試:
# Test it:
cd ~/oltpbench
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true
# Filter rate data only:
cd ~/oltpbench
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true | grep --line-buffered 'Rate limited'
# Do benchmark 100 times:
cd ~/oltpbench
for i in {1..100}; do
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep --line-buffered 'Rate limited'
done
# Get average result:
cd ~/oltpbench
(for i in {1..100}; do
./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep --line-buffered 'Rate limited'
done) | awk '{sum += $(NF - 1); print $(NF - 1)} END {print sum / NR}'
# Brute-force to run all cases:
echo 2 4 8 16 32 64 128 256 512 768 | xargs -n1 | xargs -n1 -I% bash -c "sed -i -e 's/<terminals>[0-9]*/<terminals>%/' config/tpcc.xml; echo %; (for i in {1..100}; do ./oltpbenchmark -b tpcc -c config/tpcc.xml --execute=true 2>&1 | grep 'Rate limited'; done) | awk '{sum += \$(NF - 1)} END {print sum / NR}'"
調整
在tpcc.xml
內的terminals
參數可以調整,以產生足夠多的client模擬測試。
其他
CockroachDB
如果以PostgreSQL的界面測試CockroachDB時,會因為CockroachDB不支援CONSTRAINT
指到沒有index的欄位,會需要修改PostgreSQL產生表格時的設定,並且重新編譯:
cd ~/oltpbench
sed -i -e 's/^ALTER TABLE /-- ALTER TABLE/' src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-postgres-ddl.sql
# Then rebuild oltpbenchmark:
cd ~/oltpbench
ant clean
ant
另外CockroachDB只支援SERIALIZE
模式,所以tpcc.xml
內也修改成TRANSACTION_SERIALIZABLE
:
cd ~/oltpbench
sed -i -e 's/TRANSACTION_READ_COMMITTED/TRANSACTION_SERIALIZABLE/' config/tpcc.xml