database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5)...
Transcript of database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5)...
![Page 1: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/1.jpg)
1
(5)
( )
JPOUG> SET EVENTS 20120721
2012/07/21
![Page 2: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/2.jpg)
2
• DB Oracle MySQL
– RDBMS
– Oracle MySQL 8 2
• Twitter @sh2nd
• id:sh2
•
![Page 3: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/3.jpg)
3
•
– 1 http://d.hatena.ne.jp/sh2/20090802
– 2 http://d.hatena.ne.jp/sh2/20090816
– 3 http://d.hatena.ne.jp/sh2/20100112
– 4 http://d.hatena.ne.jp/sh2/20100510
• 4
• 2
![Page 4: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/4.jpg)
4
![Page 5: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/5.jpg)
5
•
• A
• D
A
• Apache Bench
• Apache JMeter
• HP LoadRunner
B
• SPECjbb2005
C
• Oracle Real Application Testing
(Database Replay)
D
• SysBench
• pgbench
• tpcc-mysql
![Page 6: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/6.jpg)
6
D
• D
• DB
• SSD
•
• MySQL 5.5 5.6
• Oracle Database PostgreSQL
•
•
•
• Statspack/AWR
•
![Page 7: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/7.jpg)
7
SysBench
• RDBMS Oracle DatabaseMySQL PostgreSQL
• OS Linux
• C
• Alexey Kopytov
• GPLv2
•(0.5 )
• SysBench I/O
• Facebook MariaDB
• Launchpad 0.5
0.5 Lua
![Page 8: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/8.jpg)
8
pgbench
• RDBMS PostgreSQL
• OS Linux
• C
•
• BSD
•TPC-B
• accounts tellers branches
UPDATE history
INSERT
•PostgreSQL 9.2
• mysqlbench MySQL
![Page 9: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/9.jpg)
9
tpcc-mysql
• RDBMS MySQL
• OS Linux
• C
•
•
• TPC-C
• 5
• MySQL
InnoDB Plugin
• Oracle Database
PostgreSQL
![Page 10: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/10.jpg)
10
• Linux
– Windows
– Solaris HP-UX AIX
• RDBMS
– pgbench Oracle Database
– tpcc-mysql Oracle Database PostgreSQL
– SysBench RDBMS PostgreSQL
FIXME
• TPC-C tpcc-mysql
– 2
![Page 11: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/11.jpg)
11
JdbcRunner -
![Page 12: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/12.jpg)
12
JdbcRunner -
•http://dbstudy.info/jdbcrunner/
• BSD
• 1.2
![Page 13: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/13.jpg)
13
OS RDBMS
• Java OS
– Java SE 6
• JDBC RDBMS
– SQL
– Oracle Database MySQL PostgreSQL
![Page 14: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/14.jpg)
14
• JavaScript
• JavaScript SQL Java
• pgbench 15
• SQL
function run() {var tid = random(1, TID_SCALE * scale);var bid = Math.floor((tid - 1) / TID_SCALE) + 1;var aid = random(AID_SCALE * (bid - 1) + 1, AID_SCALE * bid);var delta = random(-999999, 999999);
execute("UPDATE accounts SET abalance = abalance + $int WHERE aid = $int", delta, aid);query("SELECT abalance FROM accounts WHERE aid = $int", aid);execute("UPDATE tellers SET tbalance = tbalance + $int WHERE tid = $int", delta, tid);execute("UPDATE branches SET bbalance = bbalance + $int WHERE bid = $int", delta, bid);execute("INSERT INTO history (tid, bid, aid, delta, mtime, filler) "
+ "VALUES ($int, $int, $int, $int, $timestamp, $string)",tid, bid, aid, delta, new Date(), FILLER);
commit();}
![Page 15: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/15.jpg)
15
Mozilla Rhino
• JavaScript Rhino( )
• TPC-C if for
XML DSL
• Java VM 2006 Java SE 6
Groovy( ) Rhino(JavaScript )
JRuby(Ruby ) Jython(Python )
• Rhino Rhino
JavaScript
![Page 16: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/16.jpg)
16
SysBench OLTP tps (read-only, 1M recs, uniform)
0.0 100.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0
CBP
CB-
C--
-B-
---MySQL
MySQL Server-Side
• Oracle Database OLTP
–
–
– PreparedStatement
•
• JdbcRunner
![Page 17: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/17.jpg)
17
•
• Tiny SysBench
– SysBench OLTP
– Oracle Database MySQL PostgreSQL
– PostgreSQL FIXME
• Tiny TPC-B
– TPC-B
– Oracle Database MySQL PostgreSQL
– pgbench
• Tiny TPC-C
– TPC-C
– Oracle Database MySQL PostgreSQL
– tpcc-mysql
![Page 18: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/18.jpg)
18
•
•
• Calc
![Page 19: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/19.jpg)
19
•CPU 100%
• A
• JdbcRunner
•
![Page 20: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/20.jpg)
20
![Page 21: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/21.jpg)
21
NEC HP
• HP ProLiant Server InfiniBand IO CLUSTERPRO
http://www.nec.co.jp/pfsoft/clusterpro/clp/download.html#wp
• DB Fusion-io ioDrive CLUSTERPRO
• JdbcRunner Tiny TPC-C PostgreSQL 9.0 Microsoft SQL Server
2008 R2
• JdbcRunner SQL Server
( )
![Page 22: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/22.jpg)
22
CPU
• JdbcRunner
CPU
• cpuspeed
CPU
• cpuspeed
CPU
0 20 40 60 80 100 120 140 160 180
0.0
10.0
20.0
30.0
40.0
50.0
60.0
70.0
80.0
90.0
100.0
TPC-C throughput vs CPU usage(Turbo Boost OFF cpuspeed stopped)
usr
usr+sys
usr+sys+wait
Throughput (tps)
CPU usage (%)
0 20 40 60 80 100 120 140 160 180
0.0
10.0
20.0
30.0
40.0
50.0
60.0
70.0
80.0
90.0
100.0
TPC-C throughput vs CPU usage(Turbo Boost ON cpuspeed ondemand)
usr
usr+sys
usr+sys+wait
Throughput (tps)
CPU usage (%)
![Page 23: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/23.jpg)
23
![Page 24: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/24.jpg)
24
Java
• IBM developerWorks
JdbcRunner
• Java : - IBM developerWorks
http://www.ibm.com/developerworks/jp/java/library/j-jtp12214/
•
– Java HotSpot
–(JdbcRunner
)
–
![Page 25: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/25.jpg)
25
• JdbcRunner RDBMS
• JdbcRunner CPU
• 2
• CPU CPU
OS
http://ja.community.dell.com/techcenter/b/weblog/archive/2010/12/20/rhel6.as
px
JdbcRunner RDBMS
![Page 26: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/26.jpg)
26
VM
• Java VM
– VM
-client
– VM
-server
• VM 2
• Windows JRE VM JDK
• Java VM
JDK jvm.cfg
-client KNOWN-server KNOWN-hotspot ALIASED_TO -client-classic WARN-native ERROR-green ERROR
![Page 27: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/27.jpg)
27
HotSpot
• HotSpot
Java VM -XX:+PrintCompilation HotSpot
JdbcRunner -warmupTime
$ java -server -XX:+PrintCompilation JR tpcc.js
…
8966 447 org.mozilla.javascript.NativeArray::js_sort (146 bytes)9087 448 org.mozilla.javascript.NativeNumber::execIdCall (345 bytes)
10:11:19 [INFO ] [Warmup] -292 sec, 94,94,10,10,9 tps, (496,498,50,50,49 tx)9467 449 org.mozilla.javascript.gen.tpcc_js_6::getParamOrVarName (940 bytes)9470 450 org.mozilla.javascript.gen.tpcc_js_6::getParamOrVarConst (808 bytes)9730 451 java.lang.StringBuilder::toString (17 bytes)
10:11:20 [INFO ] [Warmup] -291 sec, 93,95,8,10,10 tps, (589,593,58,60,59 tx)10357 452 oracle.jdbc.driver.T4CTTIrxd::unmarshalBVC (158 bytes)10486 453 sun.util.calendar.Gregorian$Date::getNormalizedYear (5 bytes)10581 454 ! oracle.jdbc.driver.OraclePreparedStatement::setDouble (29 bytes)
…
81962 584 ! org.apache.commons.pool.impl.GenericObjectPool::borrowObject (908 bytes)10:12:32 [INFO ] [Warmup] -219 sec, 89,90,10,10,8 tps, (7314,7317,732,732,731 tx)10:12:33 [INFO ] [Warmup] -218 sec, 93,90,8,10,9 tps, (7407,7407,740,742,740 tx)10:12:34 [INFO ] [Warmup] -217 sec, 101,103,11,8,11 tps, (7508,7510,751,750,751 tx)10:12:35 [INFO ] [Warmup] -216 sec, 95,93,9,10,9 tps, (7603,7603,760,760,760 tx)10:12:36 [INFO ] [Warmup] -215 sec, 94,95,10,9,10 tps, (7697,7698,770,769,770 tx)
![Page 28: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/28.jpg)
28
HotSpot
• -nAgents 200 HotSpot
• Java VM HotSpot
HotSpot
HotSpot
CPU
• Java VM -Xbatch HotSpot
HotSpot
• JdbcRunner -warmupTime
![Page 29: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/29.jpg)
29
Solaris
• Solaris Java SE 6
java.sql.SQLRecoverableException
• Java VM
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4385444
• Java SE 7 Java VM -XX:-UseVMInterruptibleIO
![Page 30: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/30.jpg)
30
![Page 31: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/31.jpg)
31
JdbcRunner 1.3
• m(_ _)m
•
• Subversion GitHub
https://github.com/sh2/jdbcrunner
• 10
![Page 32: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/32.jpg)
32
tpcc-mysql
• tpcc-mysql
• JdbcRunner tpcc_load.js
tpcc-mysql
• tpcc-mysql
![Page 33: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/33.jpg)
33
1 Thread
1 Thread
4 Threads
1 Thread
4 Threads
tpcc-mysql
JdbcRunner 1.2
JdbcRunner 1.3
0 100 200 300 400 500 600 700 800 900
TPC-C data load time (sec, scale 16, lower is better)
tpcc-mysql
• tpcc-mysql 8
•http://d.hatena.ne.jp/sh2/20090528
![Page 34: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/34.jpg)
34
TPC-E
• ER
![Page 35: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/35.jpg)
35
Java SE 7/8
• Rhino
• CPU Rhino JDBC
Rhino V8 10
• Java SE 7 invokedynamic Java VM
Rhino
invokedynamic
https://github.com/mozilla/rhino/tree/invokedynamic
• Java SE 8 Nashorn( ) JavaScript
http://www.publickey1.jp/blog/12/javavmjavascriptecmascript5nashornjdk_8n
odejs.html
![Page 36: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/36.jpg)
36
•
•
• Javadoc
•
•
$ java JRJdbcRunner 1.2
$ LC_ALL=C java JRJdbcRunner 1.2Script file is not specified
![Page 37: database stress testing tools 5 publish - dbstudy.info · 1 gug gmggg gg2 ,´gtgggvgrg gyg føg (5) (¶6ä"') jpoug> set events 20120721 2012/07/21 ¹ /2 µ](https://reader034.fdocuments.net/reader034/viewer/2022043017/5f39a1a22e947b6fc27051c4/html5/thumbnails/37.jpg)
37
1. FreeBSD HP-UX AIX
2. DB2 HiRDB Symfoware Firebird
3. Tiny TPC-C