Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
1
(5)
( )
JPOUG> SET EVENTS 20120721
2012/07/21
2
• DB Oracle MySQL
– RDBMS
– Oracle MySQL 8 2
• Twitter @sh2nd
• id:sh2
•
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
4
5
•
• A
• D
A
• Apache Bench
• Apache JMeter
• HP LoadRunner
B
• SPECjbb2005
C
• Oracle Real Application Testing
(Database Replay)
D
• SysBench
• pgbench
• tpcc-mysql
6
D
• D
• DB
• SSD
•
• MySQL 5.5 5.6
• Oracle Database PostgreSQL
•
•
•
• Statspack/AWR
•
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
8
pgbench
• RDBMS PostgreSQL
• OS Linux
• C
•
• BSD
•TPC-B
• accounts tellers branches
UPDATE history
INSERT
•PostgreSQL 9.2
• mysqlbench MySQL
9
tpcc-mysql
• RDBMS MySQL
• OS Linux
• C
•
•
• TPC-C
• 5
• MySQL
InnoDB Plugin
• Oracle Database
PostgreSQL
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
11
JdbcRunner -
12
JdbcRunner -
•http://dbstudy.info/jdbcrunner/
• BSD
• 1.2
13
OS RDBMS
• Java OS
– Java SE 6
• JDBC RDBMS
– SQL
– Oracle Database MySQL PostgreSQL
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();}
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
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
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
18
•
•
• Calc
19
•CPU 100%
• A
• JdbcRunner
•
20
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
( )
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 (%)
23
24
Java
• IBM developerWorks
JdbcRunner
• Java : - IBM developerWorks
http://www.ibm.com/developerworks/jp/java/library/j-jtp12214/
•
– Java HotSpot
–(JdbcRunner
)
–
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
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
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)
28
HotSpot
• -nAgents 200 HotSpot
• Java VM HotSpot
HotSpot
HotSpot
CPU
• Java VM -Xbatch HotSpot
HotSpot
• JdbcRunner -warmupTime
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
30
31
JdbcRunner 1.3
• m(_ _)m
•
• Subversion GitHub
https://github.com/sh2/jdbcrunner
• 10
32
tpcc-mysql
• tpcc-mysql
• JdbcRunner tpcc_load.js
tpcc-mysql
• tpcc-mysql
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
34
TPC-E
• ER
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
36
•
•
• Javadoc
•
•
$ java JRJdbcRunner 1.2
$ LC_ALL=C java JRJdbcRunner 1.2Script file is not specified
37
1. FreeBSD HP-UX AIX
2. DB2 HiRDB Symfoware Firebird
3. Tiny TPC-C