スマートスタイル TECH BLOG

Percona XtraDB Cluster 5.7.17 の高速化について

はじめに

2017年4月19日に、Percona XtraDB Cluster (以下: PXC) 5.7 の最新バージョンである 5.7.17-29.20 がリリースされました。

https://www.percona.com/doc/percona-xtradb-cluster/LATEST/release-notes/Percona-XtraDB-Cluster-5.7.17-29.20.html

上記のリリースノートを読むと、衝撃的な記述があります。曰く、「パフォーマンスが10倍近くまで改善された」という内容です。

This release was focused on performance and scaling capability with increasing workload threads.
Tests show up to 10 times increase in performance.

こちらについては、公式ブログである Percona Performance Blog に投稿された以下の記事でも、実際のベンチマーク結果と共に解説されています。たしかにベンチマーク結果を見る限りでは、スコアが10倍近く伸びていることが分かります。

“Performance improvements in Percona XtraDB Cluster 5.7.17-29.20”
https://www.percona.com/blog/2017/04/19/performance-improvements-percona-xtradb-cluster-5-7-17/

検証

しかしながら、ここまでの情報をみても「本当か?」という思いが拭い切れないと思います。そこで、手元のDocker環境で、実際に PXC 5.7.17 のパフォーマンスを計測してみました。

※ 以下の記事の「2. Docker, docker-compose をセットアップ」、および設定ファイルの配置まで完了しているものとします
Dockerで Percona XtraDB Cluster 環境を構築する方法

1. sysbench1.0 と Percona-Server-client のインストール

Percona Serverのyumリポジトリを利用して、ベンチマークツールであるsysbenchをインストールします。また、あわせてPercona Server 5.7のクライアントもインストールします。

※ クライアントはインストール済みのものを使用しても構いません

2. 2種類のymlファイルを用意する

以下、5.7.16 用と 5.7.17 用の、2つのdocker-compose.ymlを用意します。

3. PXC 5.7.16 を起動する

PXC 5.7.16 の3ノードを起動します。-f オプションで使用するyml ファイルを指定します。

4. sysbenchを実行する

全ノードが正常に立ち上がったら、node1に対してsysbenchを実行します。実行するシナリオ(.luaファイル)は、更新クエリーのみで構成される「oltp_update_index.lua」です。

5. PXC 5.7.16 のコンテナを破棄し、PXC 5.7.17 を起動する

PXC 5.7.16 のコンテナを全て破棄します。

今度は、PXC 5.7.17 のコンテナを起動します。手順は同じです。

6. sysbenchを実行する

PXC5.7.17 に対して、先ほどと同じ条件で sysbench を実行します。

7. sysbenchの結果を比較する

取得した「5716_sysbench_result.txt」と「5717_sysbench_result.txt」を比較します。diff コマンドが便利です。

この結果をみると、「10倍」とまではいかないものの「2~3倍」くらいはパフォーマンスが改善されていることが確認できます。

改善の理由

“How We Made Percona XtraDB Cluster Scale”
https://www.percona.com/blog/2017/04/19/how-we-made-percona-xtradb-cluster-scale/

ちなみに、PXC5.7.17でこれ程までにパフォーマンスが改善した理由については、上記のブログ記事で解説されています。この内容をまとめますと、改善したポイントは以下の2点のようです。

  • InnoDBのprepareフェーズ(≒クエリーの実行)を並列で実行できるようにした
  • トランザクションのコミット順は、MySQLのGROUP COMMITキューの順番に準拠するようにした(Galera側のコミット順チェックは冗長だから止めた)

つまり、同時並列性能が大きく改善されているようです。そのため、より高スペックなサーバー環境であれば、更なるパフォーマンス(10倍近い?)が期待できるかもしれません。


Percona

 

Return Top