(5)
(
)
JPOUG> SET EVENTS 20120721
2012/07/21
1
• DB
–
–
Oracle MySQL
RDBMS
Oracle MySQL 8 2
• Twitter @sh2nd
•
id:sh2
•
2
•
–
–
–
–
•
•
1
2
3
4
http://d.hatena.ne.jp/sh2/20090802
http://d.hatena.ne.jp/sh2/20090816
http://d.hatena.ne.jp/sh2/20100112
http://d.hatena.ne.jp/sh2/20100510
4
2
3
4
•
A
B
• Apache Bench
• Apache JMeter
• HP LoadRunner
• SPECjbb2005
C
D
• Oracle Real Application Testing
(Database Replay)
• SysBench
• pgbench
• tpcc-mysql
•
•
A
D
5
D
•
• DB
•
•
D
SSD
• MySQL 5.5
5.6
• Oracle Database PostgreSQL
•
•
•
•
•
Statspack/AWR
6
SysBench
•
•
•
•
•
•
RDBMS Oracle Database
MySQL PostgreSQL
OS Linux
C
Alexey Kopytov
GPLv2
(0.5
• SysBench
• Facebook
• Launchpad
)
I/O
MariaDB
0.5
0.5 Lua
7
pgbench
•
•
•
•
•
•
RDBMS PostgreSQL
OS Linux
C
BSD
TPC-B
• accounts tellers branches
UPDATE
history
INSERT
•
PostgreSQL 9.2
• mysqlbench
MySQL
8
tpcc-mysql
•
•
•
•
•
•
RDBMS MySQL
OS Linux
C
TPC-C
•
•
5
MySQL
InnoDB Plugin
•
Oracle Database
PostgreSQL
9
•
Linux
– Windows
– Solaris HP-UX AIX
•
RDBMS
– pgbench Oracle Database
– tpcc-mysql Oracle Database
– SysBench
RDBMS
FIXME
•
–
TPC-C
2
PostgreSQL
PostgreSQL
tpcc-mysql
10
JdbcRunner -
11
JdbcRunner •
http://dbstudy.info/jdbcrunner/
•
•
BSD
1.2
12
OS RDBMS
• Java
– Java SE 6
• JDBC
–
–
OS
RDBMS
SQL
Oracle Database MySQL PostgreSQL
13
•
JavaScript
• JavaScript
• pgbench
SQL
Java
15
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();
}
•
SQL
14
Mozilla Rhino
• JavaScript
Rhino(
• TPC-C
if
)
for
XML
• Java VM
JRuby(Ruby
•
Groovy(
) Jython(Python
)
Rhino
JavaScript
DSL
2006
Java SE 6
) Rhino(JavaScript
)
Rhino
15
• Oracle Database
OLTP
–
–
– PreparedStatement
•
• JdbcRunner
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
16
•
• 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
17
•
•
•
Calc
18
•
CPU
•
100%
A
• JdbcRunner
•
19
20
NEC
HP
• HP ProLiant Server InfiniBand IO
CLUSTERPRO
http://www.nec.co.jp/pfsoft/clusterpro/clp/download.html#wp
(
• DB
Fusion-io
• JdbcRunner
2008 R2
•
ioDrive
Tiny TPC-C
)
CLUSTERPRO
PostgreSQL 9.0 Microsoft SQL Server
JdbcRunner SQL Server
21
CPU
TPC-C throughput vs CPU usage
(Turbo Boost OFF
90.0
90.0
80.0
80.0
70.0
70.0
60.0
50.0
40.0
30.0
(Turbo Boost ON
100.0
CPU usage (%)
CPU usage (%)
100.0
TPC-C throughput vs CPU usage
cpuspeed stopped)
usr
cpuspeed ondemand)
60.0
50.0
40.0
30.0
usr
20.0
usr+sys
20.0
usr+sys
10.0
usr+sys+wait
10.0
usr+sys+wait
0.0
0.0
0
20
40
60
80
100
120
140
160
180
0
20
40
60
80
100
120
140
160
180
Throughput (tps)
Throughput (tps)
• JdbcRunner
CPU
• cpuspeed
CPU
•
cpuspeed
CPU
22
23
Java
• IBM developerWorks
JdbcRunner
• Java
:
- IBM developerWorks
http://www.ibm.com/developerworks/jp/java/library/j-jtp12214/
•
– Java
HotSpot
–
(JdbcRunner
)
–
24
JdbcRunner
• JdbcRunner
• JdbcRunner
RDBMS
RDBMS
CPU
•
2
• CPU
CPU
OS
http://ja.community.dell.com/techcenter/b/weblog/archive/2010/12/20/rhel6.as
px
25
VM
• Java VM
–
VM
-client
–
VM
-server
•
•
VM
Windows
2
JRE
•
JDK
VM
JDK
Java VM
jvm.cfg
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
26
HotSpot
•
HotSpot
Java VM -XX:+PrintCompilation
JdbcRunner
HotSpot
-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 !
10:12:32 [INFO
10:12:33 [INFO
10:12:34 [INFO
10:12:35 [INFO
10:12:36 [INFO
]
]
]
]
]
org.apache.commons.pool.impl.GenericObjectPool::borrowObject (908 bytes)
[Warmup] -219 sec, 89,90,10,10,8 tps, (7314,7317,732,732,731 tx)
[Warmup] -218 sec, 93,90,8,10,9 tps, (7407,7407,740,742,740 tx)
[Warmup] -217 sec, 101,103,11,8,11 tps, (7508,7510,751,750,751 tx)
[Warmup] -216 sec, 95,93,9,10,9 tps, (7603,7603,760,760,760 tx)
[Warmup] -215 sec, 94,95,10,9,10 tps, (7697,7698,770,769,770 tx)
27
HotSpot
• -nAgents 200
• Java VM
HotSpot
HotSpot
HotSpot
HotSpot
CPU
• Java VM -Xbatch
HotSpot
HotSpot
•
JdbcRunner
-warmupTime
28
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
29
30
JdbcRunner 1.3
•
m(_ _)m
•
•
•
Subversion
https://github.com/sh2/jdbcrunner
GitHub
10
31
tpcc-mysql
• tpcc-mysql
• JdbcRunner
•
tpcc_load.js
tpcc-mysql
tpcc-mysql
32
tpcc-mysql
•
tpcc-mysql
8
•
http://d.hatena.ne.jp/sh2/20090528
TPC-C data load time (sec, scale 16, lower is better)
0
tpcc-mysql
100
200
300
400
500
600
700
800
900
1 Thread
1 Thread
JdbcRunner 1.2
4 Threads
1 Thread
JdbcRunner 1.3
4 Threads
33
TPC-E
•
ER
34
Java SE 7/8
• Rhino
•
CPU
Rhino V8
• Java SE 7 invokedynamic
Rhino
10
JDBC
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
35
•
•
$ java JR
JdbcRunner 1.2
•
$ LC_ALL=C java JR
JdbcRunner 1.2
Script file is not specified
Javadoc
•
•
36
1. FreeBSD HP-UX AIX
2. DB2 HiRDB Symfoware Firebird
3. Tiny TPC-C
37
© Copyright 2026 Paperzz