先日、ついにMySQL 5.6.10GAがリリースされました。
機能的なところでは、オンライン(更新可能な状態)でAlter tableがサポートされたり、ブロックサイズがデフォルト16KBだったところ、4KB, 8KBに変更できるようになったなど、使ってみたいものも増えてきた感じです。
新機能概要についてはやはりnippondanjiさんの記事が非常に参考になります。
MySQL 5.6正式リリース!! #mysql56
とはいえ気になるのはやはりInnoDBの性能ということろで、早速5.5との比較をしてみました。
使用したのはお馴染みtpcc-mysqlです。
tpcc-mysqlについての詳しい説明はsh2先生の記事をご参照ください。
2009-02-12 tpcc-mysqlによるMySQLのベンチマーク
サーバリソースはこれまたsh2先生のdstatグラフ化ツールを使わせていただいています。
いつもありがとうございます。
2012-05-07 dstat2graphs – dstatのログをグラフ化するツール
検証した環境はこんな感じです。
Server
- CPU Intel Core i5 2.80 × 2 HT
- Memory 8.0GB
- Disk Micron RealSSD C400 128GB (XFS format)
Software
- OS CentOS 6.3 2.6.32-279.el6.x86_64
- MySQL 5.5.30 / 5.6.10
クライアントがネックになっていないことは確認しています。
あとネットワークはクロスケーブルで直結してます。
家のルータだと心もとないので。
Configuration
主要なパラメータは以下のようにしています。
query_cache_size = 0
query_cache_type = 0
transaction_isolation = READ-COMMITTED
sync_binlog=1
innodb_buffer_pool_size = 5600MB
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_flush_method=O_DIRECT
OSのIOスケジューラはdeadline
■検証概要
tpcc-mysqlにて300WHのデータに負荷をかける
コネクション数は2, 4, 8, 16, 32, 64, 128
測定時間は300秒です。
ランプアップは2接続の前に32接続で300秒流してます。
上記のテストを1セットとして、3セットを実施し、グラフは中間の値を採用しています。
さて結果はいかに
■結果
5.6の方が全体的にスコアが良い結果になりました。
1割から2割くらいスコアがよく、最大性能が上がっているように見えます。
接続数2では何回やっても5.5の方がスコアが良かったのでそんなものなのでしょう。
リソースを確認したところ、5.6の方がややCPUが回ってる感じがします。
InnoDBのmutexまわりの改善により、効率化された結果なのでしょうか。
気になるところとしまして、同じパラメータファイルを使っているのですがメモリの使い方がちょっと違う。
デフォルト値が変わったりしているものも多数あるようなので、その辺りで違ってきていて、スコアにも影響しているのかもしれないです。
この結果を踏まえて
接続数が少ない場合はMySQL5.5の方が早い!
MySQL5.6にすると2割くらい早くなる!
ということが言えます!
なわけでは無いのでくれぐれも注意してください。
ベンチマークを行うマシンスペック、使用データ、SQLなどが違うと結果などすぐ変わってしまうと思います。
結局のところは、実戦投入もしくは実践と同じ環境とアプリでのテストをしてみないと、バージョンを上げたところで性能が上がるかは最後までわからないはず。
この結果は、「大体こんなもん」というくらいの感覚でお願いします。
次はブロックサイズ変えてみて測定した結果を載せます。
ピンバック: MySQL 5.6と5.5はどっちが早いのか? : Yorozuyah.com : ちゅどん道中記