AuroraとRDS MySQL 5.7のsysbench
この記事を見て、結果に疑問を持ったので、AuroraとRDS MySQL 5.7のベンチマークを取ってみました。
動作環境
- サーバ
- Aurora 5.6.10a / db.r3.large / SingleAZ
- MySQL 5.7.10 / db.r3.large / SingleAZ
- io1 / 100GB / 1000iops
- 設定はそれぞれ以下を変更
sync_binlog = 0
innodb_flush_log_at_trx_commit = 2
- クライアント
- 4.1.17-22.30.amzn1.x86_64 / c4.2xlarge
- sysbench 0.4.12
- サーバとクライアントはすべて同じAZ
- 並列数を高くできるように以下の値を増やした
- max_connections
- max_prepared_stmt_count
- nofile
テストスクリプト
--oltp-table-size=100000000
-
--num-threads
は1,000〜8,000
初期データの投入
#!/bin/bash
MYSQL_HOST=...
sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=100000000 \
--mysql-host=$MYSQL_HOST \
--mysql-user=sbtest \
--mysql-password=sbtest \
--mysql-db=sbtest \
--mysql-table-engine=innodb \
prepare
ベンチマーク
#!/bin/bash
MYSQL_HOST=...
sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=100000000 \
--num-threads=$N \
--mysql-host=$MYSQL_HOST \
--mysql-user=sbtest \
--mysql-password=sbtest \
--mysql-db=sbtest \
--mysql-table-engine=innodb \
--oltp-read-only=off \
--max-requests=0 \
--max-time=60 \
run
検証方法
- データのメモリへの載り具合でだいぶスループットが変わってくるので、Aurora・RDSともに
num-threads=100
の状態でスループットが頭打つまでsysbenchを実行
- 1,000〜8,000まで500きざみで並列数を増やしていく
- 一つの並列数で5回試行し、中央値を取る
結果
- Aurora 5.6.10a / db.r3.large / SingleAZ
- MySQL 5.7.10 / db.r3.large / SingleAZ
- io1 / 100GB / 1000iops
- 設定はそれぞれ以下を変更
sync_binlog = 0
innodb_flush_log_at_trx_commit = 2
- 4.1.17-22.30.amzn1.x86_64 / c4.2xlarge
- sysbench 0.4.12
- max_connections
- max_prepared_stmt_count
- nofile
--oltp-table-size=100000000
-
--num-threads
は1,000〜8,000
初期データの投入
#!/bin/bash
MYSQL_HOST=...
sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=100000000 \
--mysql-host=$MYSQL_HOST \
--mysql-user=sbtest \
--mysql-password=sbtest \
--mysql-db=sbtest \
--mysql-table-engine=innodb \
prepare
ベンチマーク
#!/bin/bash
MYSQL_HOST=...
sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=100000000 \
--num-threads=$N \
--mysql-host=$MYSQL_HOST \
--mysql-user=sbtest \
--mysql-password=sbtest \
--mysql-db=sbtest \
--mysql-table-engine=innodb \
--oltp-read-only=off \
--max-requests=0 \
--max-time=60 \
run
検証方法
- データのメモリへの載り具合でだいぶスループットが変わってくるので、Aurora・RDSともに
num-threads=100
の状態でスループットが頭打つまでsysbenchを実行
- 1,000〜8,000まで500きざみで並列数を増やしていく
- 一つの並列数で5回試行し、中央値を取る
結果
num-threads=100
の状態でスループットが頭打つまでsysbenchを実行2016/04/18 Aurora vs MySQL 5.7 sysbench
並列数 | Aurora (r3.large) | RDS MySQL 5.7 (r3.large) |
---|---|---|
1000 | 9,132 | 8,900 |
1500 | 9,001 | 8,565 |
2000 | 8,849 | 8,069 |
2500 | 8,709 | 8,112 |
3000 | 8,490 | 8,134 |
3500 | 8,344 | 7,950 |
4000 | 8,160 | 6,192 |
4500 | 7,992 | 4,580 |
5000 | 7,603 | 3,408 |
5500 | 7,658 | 3,084 |
6000 | 7,480 | N/A |
6500 | 7,267 | N/A |
7000 | 7,091 | N/A |
7500 | 6,745 | N/A |
8000 | 6,481 | N/A |
所感
- Auroraが本領を発揮するのはクライアントが多い場合っぽい
-
oltp-read-only=on
にするとまた結果が変わりそう
- いままでPreparedStatementを使わないベンチマークをやっていたんですが、「並列性が高い」というAuroraの特性はどちらもあんまり変わらず
- 複数行取得するクエリが多かったんですが、一行だけ取得するクエリが多い場合でもまた結果変わりそう
oltp-read-only=on
にするとまた結果が変わりそうAuthor And Source
この問題について(AuroraとRDS MySQL 5.7のsysbench), 我々は、より多くの情報をここで見つけました https://qiita.com/winebarrel/items/d1453a662ec7efd0dddf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .