狠狠撸

狠狠撸Share a Scribd company logo
MySQL5.7とMariaDB10.1の
性能比較(簡易)
MySQL Casual Talks Vol.8 (2015/11/20)
自己紹介
? いとう ひろゆき
? サーバ運用?保守が仕事
? MySQL好き、酒好き
? (最近ベンチマークおじさん言われる)
最初に
? http://dimitrik.free.fr/blog/archives/
2015/11/mysql-performance-1m-qps-on-
mixed-oltp_ro-with-mysql-57-ga.html
? https://blog.mariadb.org/maria-10-1-
mysql-5-7-commodity-hardware/
? https://blog.mariadb.org/maria-10-1-
mysql-5-7-commodity-hardware/
? https://blog.mariadb.org/maria-10-1-
mysql-5-7-commodity-hardware/
!?
惭测厂蚕尝5.7と惭补谤颈补顿叠10.1の性能比较(简易)
Commodity Hardware?
? 2CPUぐらいまでOKっぽい
? 自分の観測範囲としてはDB専用サーバなら割
と多い感じ
? 4CPU? 知らない子ですね
ということで
ベンチマーク
環境
? MySQL 5.7.9 and MariaDB10.1.8
? File System
? PCI-E SSD: xfs (discard,nobarrier)
? SAS HDD: ext4 (nobarrier)
? my.cnf
? PCI-E SSDは以下を無効化
? innodb_?ush_neighbors
? innodb_read_ahead_threshold
? my.cnfその他
? innodb_io_capacity{,_max}は適宜環境に応
じて設定しています。
? innodb_log_?le_size = 1G
? innodb_log_?le_in_group = 16
? innodb_buffer_pool_size = 40G
? innodb_buffer_pool_instances = 20
? NUMA関連
? MySQL 5.7はinnodb_numa_interleave
? MariaDB 10.1はnumactl --interleave=all
? CentOS7系のみExecStartで上記を指定
ベンチマーク環境1
? 自作サーバ
? Intel Xeon E5-2630 2.30GHz x 2 (2P12C24T)
? MEM 8GB x 8 = 64GB
? Intel SSD 910 Series 400GB (200GB x 2, RAID0(md0))
? NIC Intel I350
? CentOS 7.1(3.10.0-229.14.1.el7.x86_64)
ベンチマーク環境2
? HP DL360 G8v2
? Intel Xeon E5-2643 v2 3.50GHz x 2 (2P12C24T)
? MEM 8GB x 8 = 64GB
? ioDrive2 785G (Driver version: 3.2.6)
? NIC Intel I350
? CentOS 6.6(2.6.32-504.12.2.el6.x86_64)
ベンチマーク環境3
? HP DL360 G8v2
? Intel Xeon E5-2667 v2 3.30GHz x 2 (2P16C32T)
? MEM 16GB x 8 = 128GB
? SAS HDD 600GB x 4 (RAID10)
? NIC Intel I350
? CentOS 6.7(2.6.32-573.8.1.el6.x86_64)
sysbench 0.5
./bin/sysbench 
--test=./lua/select.lua 
--rand-init=on --db-driver=mysql --oltp-read-only=on 
--rand-type=uniform 
--oltp-tables-count=18 --oltp-table-size=3000000 
--mysql-socket=/var/lib/mysql/mysql.sock 
--mysql-db=sbtest5 
--mysql-user=sbtest --mysql-password=sbtest-pw 
--max-time=60 --max-requests=0 
--num-threads=${thread} 
run
以上を8並列で実行
sysbench 0.5
./bin/sysbench 
--test=./lua/oltp.lua 
--rand-init=on --db-driver=mysql --oltp-read-only=on 
--rand-type=uniform 
--oltp-tables-count=18 --oltp-table-size=3000000 
--oltp_point_selects=1000 --oltp_sum_ranges=0 
--oltp_simple_ranges=0 --oltp_order_ranges=0 
--oltp_distinct_ranges=0 
--mysql-socket=/var/lib/mysql/mysql.sock 
--mysql-db=sbtest5 
--mysql-user=sbtest --mysql-password=sbtest-pw 
--max-time=60 --max-requests=0 
--num-threads=${thread} 
run
以上を8並列で実行
LinkBench
./bin/linkbench -c config/MyConfig.properties 
-D maxtime=3600 -D requests=10000000 -D requesters=64 -r
?64スレッド実行
?3600秒か1スレッドあたり10000000リクエスト処理したら終了
データ量
? sysbench 0.5
? 約13GB
? LinkBench
? 約21GB
ベンチマーク結果
(sysbench)
sysbench 0.5(select.lua)
ベンチマーク環境1
0
42500
85000
127500
170000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
sysbench 0.5(oltp.lua)
ベンチマーク環境1
0
50000
100000
150000
200000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
sysbench 0.5(select.lua)
ベンチマーク環境2
0
60000
120000
180000
240000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
sysbench 0.5(oltp.lua)
ベンチマーク環境2
0
70000
140000
210000
280000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
sysbench 0.5(select.lua)
ベンチマーク環境3
0
100000
200000
300000
400000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
sysbench 0.5(oltp.lua)
ベンチマーク環境3
0
100000
200000
300000
400000
number of threads
8 16 32 64 128 256 512 1024 2048 4096
MySQL MariaDB
環境1
select.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 79153.3 126892 165671 164200 162301 157935 142907 132039 131837 131738
MariaDB 81818.8 124418 169498 168143 167121 164313 155901 154942 155086 151485
環境1
oltp.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 87125.7 136120 176019 174128 172549 166197 148718 140762 144401 162449
MariaDB 64755.2 148221 191003 188706 186705 180805 164041 152048 154381 155051
環境2
select.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 97369.3 170491 229283 228034 225891 220770 207285 171191 158682 159935
MariaDB 101870 182925 239949 238332 236169 231718 224791 194868 209760 212766
環境2
oltp.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 108830 190365 248722 246606 244531 239035 230940 219336 211711 196712
MariaDB 121951 213392 271949 271133 269413 264823 253655 217833 211657 208552
環境3
select.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 105930 183877 311149 313058 309805 306151 303717 304329 302120 297241
MariaDB 107050 189611 319026 320233 318916 316263 313605 299467 305987 295381
環境3
oltp.lua
8 16 32 64 128 256 512 1024 2048 4096
MySQL 109812 217700 328504 339749 337526 337356 333486 332705 331299 332810
MariaDB 119779 240216 362312 363404 363266 362224 360097 358116 351428 338484
? sysbenchによるread only(point select)ではMariaDB
10.1の方がMySQL 5.7より優勢
? 2P12C24T環境ではMySQL, MariaDB共にピーク時から
スレッド数が増えると性能が落ちる傾向がある
? 2P16C32T環境ではMariaDBは同様に性能が落ちる傾向
があるがMySQLはほとんど性能が落ちない
? Dimitriさんのベンチマーク結果のようにコア数が増加す
るにつれてMySQLの方がMariaDBを上回る可能性があ
る(2P20C40Tあたりで拮抗するかも?)
ベンチマーク結果
(LinkBench)
? LinkBenchによるread writeではMySQL 5.7がMariaDBより環境
問わず速い傾向
? 環境2の方が環境3よりスコアが出ているのはSAS HDDのため
fsyncが遅く更新がネックになっていると考えられる。ストレー
ジを同じにすれば環境3が高スコアになる見込み。
MySQL MariaDB
環境1 38828 32039 21%
環境2 60539 53947 12%
環境3 52826 47549 11%
まとめ
? 6コア x 2、8コア x 2の環境の場合
? read onlyならMariaDB 10.1が優勢
? read writeならMySQL 5.7が優勢
? PCI-E SSD, SAS HDD問わずデータ、INDEXが
バッファに全て載る程度であれば同じ傾向
個人的に
? Dimitriさんのブログのベンチマークはコア数が増えてもス
ケールする事をメインに紹介してるようだが、MariaDBのブ
ログの4コアの場合MariaDBが優勢というのは微妙。何故なら
Dimitriさんは過去の発表資料で少ないコア数の場合はMySQL
5.5が最速と書かれてたりします。(そもそもシングルスレッド
性能は4.0とかの方が速かったりするようですが。。。)
? というかreadonlyとか特殊な環境でうちの方が速いとか書い
てて虚しくならんのかと。
? MariaDBのブログに書かれるベンチマーク結果
は環境についての情報が少ないため話半分で見
ています
? ベンチマークは所 ベンチマークです。ワーク
ロードによってはread writeであっても
MariaDBの方が速いパターンもあるかもしれま
せん。きちんと各環境でベンチマークは取得し
ましょう

More Related Content

惭测厂蚕尝5.7と惭补谤颈补顿叠10.1の性能比较(简易)