MySQL 8.0 新機能:ドキュメントストア、データディクショナリ、性能強化
最初に登壇したのはオラクルでMySQL開発を率いるトーマス・ウリン氏。2018年4月にGAとなったMySQL 8.0を象徴するフレーズは「NoSQL+SQL=MySQL」。SQL(RDB)もNoSQLもどちらも使えるデータベースであることを表している。
参考記事:「もうRDBとNoSQLを選ぶ必要はない MySQLなら両方できる」
簡単にMySQL 8.0のトピックをまとめておこう。やはり最大の特徴はドキュメントストアとしての機能強化だ。JSONドキュメントのサポートや「X DevAPI」や「MySQL Shell」の拡張など、5.7から始まったドキュメントストア機能を8.0で本格的に強化している。
MySQLをドキュメントストア使う場合、主要なコンポーネントとなるのはMySQL X プラグイン、X プロトコル、X DevAPI(ライブラリ)、MySQL Shell(インターフェース)、MySQL コネクタ、InnoDBクラスタ(拡張性や高可用性に有効)がある。
意外かもしれないが、NoSQLだけではなくSQLも強化している。代表的なものはWindow関数とCTE(Common Table Expression)。前者は分析やレポートで使うための関数で、RANK関数やLAG関数などがある。後者は共通テーブル式や再帰クエリとも呼ばれ、一時テーブルを作成してSQL実行できる。SQLのネストを避けることができてシンプルなSQLになる。いずれもリクエストが多く、ユーザーには待ち焦がれた新機能だ。
それからトランザクショナル データ ディクショナリ。ウリン氏によると「開発で多くを費やした」部分だそうだ。新機能というより、内部的に改善を施して安定性を高めた点が大きい。これまで外部ファイルに格納していたテーブル定義(メタデータ)をInnoDBに内包することで、確実に同期できるようになる。
テーブル定義をInnoDBに格納することは、InnoDBがMySQLのデフォルトストレージエンジンなので当然と言えば当然。しかしここからMySQL開発チームがInnoDBに開発リソースを集中していこうとする意向が見てとれる。
それから目を引く新機能が「Instant Alter Table」。既存のテーブルに列を追加するなど、Instantの名の通り既存のテーブルに新たに列を高速に追加できる。実はこれ、中国のテンセントからのコントリビューションだそうだ。
性能に関してオラクルは「MySQL 8.0は5.7に比べて最大2倍高速」とうたっている。8.0は5.7と比較すると、性能ピークが接続ユーザー数が多いところにある。ウリン氏が示したベンチマーク結果で使われたサーバーはCPUが48コア、メモリは256GB。ウリン氏は「サーバーのコストに合うように、いいマシンを買えば、その分、高い性能を出せます」と話す。