(※ 追記しました - 5/19/13)
巷ではMySQL 5.6 GAが出て騒がしいですが、ちょっと前に5.5系でAWSのSSDインスタンス(hi1.4xlarge)に載せ替える案件があったので、その時に取ったベンチマークを公表します。以前Fusion-IO (ioDrive Duo)でも同じようにやったので、比較になれば。
経緯
- あるウェブサービスのDBサイズが巨大でm2.4xlargeでも辛くなってきている
- アクセスパターンによりパーティショニングが効かない
- シャーディングをするにはアプリ改修が大変
- 数週間後に急激なアクセスが予想され、時間的余裕がない!
- データサイズの急激な増加によりbuffer poolから溢れ、ディスクアクセスのさらなる発生が懸念
というわけで、時間がないのでSSDへの移行を検討し、ベンチマークを取りました。
ベンチマーク
buffer poolが徐々に足りなくなった場合のディスクアクセスの発生をシミュレート
- sysbenchのoltpモード
- データサイズは12G(5000万件)
- readonly
- uniform(フルスキャン)
主要my.cnfパラメータ
sync_binlog = 0
innodb_buffer_pool_size = XXG
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table
innodb_io_capacity = 2000
コマンド
time sysbench --test=oltp --oltp-table-size=50000000 --db-driver=mysql --mysql-user=root prepare
time sysbench --test=oltp --oltp-table-size=50000000 --db-driver=mysql --mysql-user=root --num-threads=16 --max-requests=0 --max-time=180 --init-rng=on --oltp-read-only=on --oltp-dist-type=uniform 2>&1 run
結果
トランザクション推移
レスポンスタイム推移
Fusion-IOと比べて半分ぐらい。ioDrvie Duoの公称IOPSが250,000+ IOPSでhi1.4xlargeが120,000 IOPSなので、まあ合致しますね。
まだ整理されてないベンチマーク結果があるので、後ほど追記しようと思います。
追記
先日(5/17/13)のcloudpack night #6 - Re:Generate -でADSJの荒木さんの発表でMySQLのパフォーマンスの話があったのでtpcc-mysqlでベンチマークを取った資料を思い出し追記しました。
- 500 warehouses (50GBぐらい)
- 24GB Buffer pool
- 16スレッド
- 1時間実行
コマンド(ロードはかなり時間がかかるので注意)
tpcc_load localhost tpcc root "" 500
tpcc_start -d tpcc -u root -p "" -w 500 -c 16 -r 300 -l 3600
hi1.4xlargeの方が安定するまで少し時間がかかってます。
以下、安定化しだした900sあたりからの数値です。
Fusion-IO | hi1.4xlarge | |
---|---|---|
total | 2288758 | 1444417 |
avg | 8445.6 | 5330.0 |
stddev | 245.7 | 132.8 |
Fusion-IOに比べて6割ってところでしょうか。 今回はSSDのephemeral disk1本で試したので、RAID0にするともうちょっと違ってくると思います。