MySQL 5.7の新機能の紹介 – 1編

連載

2016/10/21にMySQL 5.7 GA(General Availability)がリリースされました。(MySQL 5.7.9バージョン)
MySQL 5.7のパフォーマンス向上や新機能、変更点について紹介します。

0.概要


上表は、MySQL 5.7についてOracleが簡単にまとめたものです。開発者の方なら、New Optimizer(クエリのパフォーマンス向上)、Native JSON supportのようなものに興味が行くようですね。インフラ担当者なら、3倍の高速化、様々な複製に関連する機能の向上、sysスキーマ、などが主要な争点になりそうです。まずは高速化について紹介しましょう。

1. MySQL 5.7の性能向上

1)1.5倍速い

[上図のテスト環境は、E7-8890 (18Core, 36thread 2.5GHz) * 4 EA, 512G RAM]

一般的なゲームDB環境である読み取り/書き込み環境において、MySQL 5.6と比較して最大1.5倍高速化されました。既存のMySQL 5.6は、HWがどれほど優れていても、単一装置で出力できる最大パフォーマンスに限界がありましたが、これが50%増加しました。

社内で使用する標準的なDB装置でどのようなパフォーマンスを引き出すことができるか気になりますね。残念ながら、現在の5.6の代替導入とするには、まだ時期尚早な気がします。上のグラフからも分かりますが、従来のMySQL 5.6の性能限界に到達する前に、workloadでは微細ながら5.6の方が性能が高い区間があります。つまり、非常に利用量の多いDBでない限り、パフォーマンス向上は見られません。また、12Core未満の機器では、パフォーマンスの向上が高くないというレポートもあります。(これは競合他社のMariaDBでテストしたものなので、割愛します)
我々がGA以前のバージョンでテストしたときは、5.6と比べてパフォーマンスの低下が発生しました。

2)3倍速い


読み取り専用では3倍高速です。上記と同じようなシステムでPK(primary key) lookupだけの場合、160万QPSも処理します。GAが登場する前のバージョンでテストした時も、readの性能は5.6よりやや高い状態でした。しかし、これらの結果だけをもとにアップグレードするには何かが足りません。

3)クエリのパフォーマンス向上

臨時テーブルもMyISAMからinnodbにエンジンを変え、パフォーマンスが高まりました。また、動作しているthreadのexplainも確認できる機能が追加されました。実際のところ、上記1)、2)の性能向上よりも、これが理由でMySQL 5.7の導入を準備している方もいるでしょう。クエリの性能テストにexplainを使用するのが、より詳細になって改善されています。jsonに出力できる上に、ステップ別のcost情報も確認できます。これによって、どの段階で問題があるか、ほぼ商用DBMSレベルでチェックできるようになりました。特にworkbenchから見ると、クエリプランがかなり分かりやすくグラフで表現されます。


ヒントを与える方式がもう少し細かくなり、Query Rewrite Pluginという特定パターンのクエリをDB単位に変えてクエリする機能ができました。ただ、このような機能は慣れるまでに少し時間がかかりそうですね。

パフォーマンス向上については、2つに要約できます。

  1. 最高処理性能が向上し、より大きいスペックの装備にも丸ごとMySQLをインストールして使えるなりました。
  2. クエリの最適化が向上して、開発/管理機能が大幅に改善されました。

次回は、MySQL 5.7に対応する新しい機能について紹介したいと思います。

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop