2019年4月10日水曜日

時々遅いデータベースはデータベースではありません...

だから私は最近更新されたMySQL 5、6がなぜ古い5.5より遅いのかを調べるように依頼されました。

それで私は標準変数やキャッシュなどを見回すことから始めました。

テストケースは、5.5よりも5.6で実行するのに約2倍の時間がかかる単純なルーチンでした。

ミックスに追加するために、5.6バージョンはInnodb_buffer_pool_sizeの2倍、そしてもちろん全体的にもっと多くのramを持っていました。

だから私はMySQLslapでいくつかのテストを始めました...

Mysqlslapテストでは5.6では遅くなります

5.6:
mysqlslap --defaults-file =。/。my.cnf --concurrency = 150 --iterations = 130 -query = / test.sql --create-schema = applicationdata --verbose
基準
すべてのクエリを実行するための平均秒数:0.028秒
すべてのクエリを実行するための最小秒数:0.019秒
すべてのクエリを実行する最大秒数:0.071秒
クエリを実行しているクライアントの数:150
1クライアントあたりの平均クエリ数:1

5.5:
mysqlslap --defaults-file =。/。my.cnf --concurrency = 150 --iterations = 130 --query = / test.sql --create-schema = applicationdata --verbose
基準
すべてのクエリを実行するための平均秒数:0.015秒
すべてのクエリを実行するための最小秒数:0.011秒
すべてのクエリを実行する最大秒数:0.024秒
クエリを実行しているクライアントの数:150
1クライアントあたりの平均クエリ数:1


これはすべて公開ベンチマークに反する
http://dimitrik.free.fr/blog/archives/2013/02/mysql-performance-mysql-56-ga-vs-mysql-55-32cores.html

だから私はディスクレベルをチェックしました -

5.6:
#dd if = / dev / zero of =テストbs = 1048576 count = 2048
2048 + 0レコード
2048 + 0レコード
2147483648バイト(2.1 GB)コピー、25.7401秒、83.4 MB /秒

#dd if =テスト= / dev / null bs = 1048576
2048 + 0レコード
2048 + 0レコード
2147483648バイト(2.1 GB)コピー、29.1527秒、73.7 MB /秒

5.5:
#dd if = / dev / zero of =テストbs = 1048576 count = 2048
2048 + 0レコード
2048 + 0レコード
2147483648バイト(2.1 GB)コピー、19.9214秒、108 MB /秒

#dd if =テスト= / dev / null bs = 1048576
2048 + 0レコード
2048 + 0レコード
2147483648バイト(2.1 GB)コピー、20.0243秒、107 MB /秒



ここで5.5のディスクはMySQLに関係なく遅くなります。 だからこの場合....ディスクの速度を固定するために見て.. MySQLは正常に動作しています。