37
1 䝕䞊䝍䝧䞊䝇㈇Ⲵ䝔䝇䝖䝒䞊䝹䜎䛸䜑(5) (බ㛤∧) JPOUG> SET EVENTS 20120721 2012/07/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 µ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

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 µ

37

1. FreeBSD HP-UX AIX

2. DB2 HiRDB Symfoware Firebird

3. Tiny TPC-C