LoginSignup
3
0

More than 5 years have passed since last update.

sysbenchを使ったMySQL5.6とPXC5.7の性能比較

Last updated at Posted at 2018-05-02

概要

業務でPercona XtraDB Cluster5.7(以下、PXC5.7)を使うことになり、せっかくなのでMySQL5.6環境と性能差を見てみることにしました。
結果に波があったので同じホストの他インスタンスの影響を受けている可能性があります。。参考程度にお願いします。

先にまとめ

総じてPXC5.7は優秀でした。

検証

環境

バージョン CPU MEMORY
MySQL5.6 1 4GB
PXC5.7 1 4GB

前提条件

  • mysqlのパラメータは、バージョンや構成等の差分を除き、基本的に揃えています。

ベンチマークツール

SysBenchというをベンチマークツールを使用します。

Sysbencのインストール方法

$ sudo yum install sysbench -y
$ sysbench --version
sysbench 0.4.12

動作テスト

試しにcpuのパフォーマンステストを実施します。
以下のように出力されればOKです。

$ sysbench --test=cpu run
(snip)
Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          13.8662s
    total number of events:              10000
    total time taken by event execution: 13.8598
    per-request statistics:
         min:                                  1.31ms
         avg:                                  1.39ms
         max:                                 18.70ms
         approx.  95 percentile:               1.66ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   13.8598/0.00

トランザクションテスト

事前準備

こちらの情報を参考にダミーテーブルを作成します。デフォルトだと10000件のダミーデータが作成されます。

テスト1

以下のコマンドを実行し、データベースのトランザクションテストを実行します。

$ sysbench --num-threads=1 --test=oltp --mysql-password=hogehoge --db-driver=mysql run

オプションについては、こちら が分かりやすいです。

テスト1 結果

今回は一部結果のみを抜粋します。PXC5.7の方が倍近い数値を出しました。さすがです。

項目 MySQL5.6 PXC5.7
TPS(Transaction per second) 65.98 per sec. 120.80 per sec.
read/write requests: 1253.62 per sec. 2295.29 per sec.
other operations: 131.96 per sec. 241.61 per sec.

テスト2

次に innodb_buffer_pool_size のサイズ(今回は512MB)より大きなテストデータを作成して試験します。 --oltp-table-size でレコード数を指定します。

# テーブル作成コマンド
$ sysbench --test=oltp --mysql-password=hogehoge --db-driver=mysql --oltp-table-size=10000000 prepare

$ sudo mysql
mysql> select table_schema, sum(data_length+index_length) /1024 /1024 as MB from information_schema.tables  group by table_schema order by sum(data_length+index_length) desc;                            +--------------------+---------------+
| table_schema       | MB            |
+--------------------+---------------+
| sbtest             | 2120.65625000 | ※sbtestという約2GBのテーブルが作成されました

mysql,PXCを再起動して、innodb_buffer_pool_size を開放し、さきほどと同じコマンドでテストします。

$ sysbench --num-threads=1 --test=oltp --mysql-password=hogehoge --db-driver=mysql run

テスト2 結果

MySQL5.6に関しては、テスト1の結果と比較すると性能が半分近くに落ちています。
sarで確認したところ、 iowaitが60%〜70%近く発生したのでディスクI/Oが発生したようです。
PXC5.7は、性能劣化は確認できませんでした。

MySQL5.6

項目 テスト1 テスト2 性能比
TPS(Transaction per second) 65.98 53.89 -18.32%
read/write requests: 1253.62 1024.00 -18.32%
other operations: 131.96 107.79 -18.32%

PXC5.7

本当か?w

項目 テスト1 テスト2 性能比
TPS(Transaction per second) 120.80 130.07 7.67%
read/write requests: 2295.29 2471.29 7.67%
other operations: 250.38 260.14 3.90%
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0