Percona Live 2016からのレポート:MySQL 8に何を期待しますか?



こんにちは、Habr! Percona Live Data Performance Conference 2016が先週開催されましたが、いつものように、新しい情報が山ほどありますが、まだメモを整理したり、届かなかったレポートのスライドを閲覧したりしています。 MySQLコミュニティは、「並行」コミュニティおよびプロジェクトに対してオープンで友好的です。 当然、Oracle MySQL、MariaDB、Percona Serverに関するレポートがありましたが、MongoDB、Redis、Tarantool、Hadoop、Cassandra、Scylla、Ignite、HBase、ActorDB、SQLite、ToroDB、Tempesta DB、さらにはPostgreSQL最適化に関するレポートもありました。 MySQLや他のDBMS向けに多少一般化されています。







Oracleの従業員は、講義と傍観の両方で、MySQL 8の計画を思いがけなく寛大に共有しました。 この情報は私にとって十分興味深いものであるように思えたので、聞いたことを簡単に要約することにしました。







はい、リリース番号スキームはMySQLの次のバージョンで変更されました。 次のメジャーリリースはMySQL 8と呼ばれ、その後のすべてのメジャーリリースには9、10などの番号が付けられます。 これは、最初にMySQLがMySQL Cluster(現在リリース番号7.5)に統合されるため、そして番号付けを簡素化するため、メジャーリリース(5.5、5.6、5.7)が修正リリースのように見えないようにするために行われました。







迅速なプラグイン



MySQL開発チームによると、ユーザーは、新しい機能を次のメジャーリリースまで待つ必要がないように、より柔軟な開発サイクルを望んでいます。 多くのユーザーは、たとえそれが湿っていても新しい機能をテストする準備ができていますが、問題が発生した場合は無効にすることができます。







この問題に対して提案されている解決策は、翻訳が難しい用語の高速プラグインと呼ばれます。 結論としては、可能な場合には、新しい機能がプラグインの形でリリースされるということです。 モジュールのバージョンはサーバーのバージョンと一致しますが、私が理解するように、異なるバージョンのサーバー間でこれらのモジュール間の互換性を約束するものではありません。 つまり、 これは、新しい機能を古い機能から分離するためだけに行われ、必要に応じて新しい機能を接続/切断することができます。







実際、この新しい機能は現在の安定版リリース5.7ですでに実行されています。 MySQL 5.7.12では、わずかに神秘的な名前のXプラグインを持つ新しいモジュールが登場しました。このトピックに関する記事がHabrに掲載されていないのは非常に奇妙です。 Python、JavaScript、Node.js、.Net、およびJavaのバインダーを備えたCRUD、JSON、およびドキュメントストアに重点を置いたNoSQL API、および サーバーとのインタラクティブな作業のための新しいコマンドラインユーティリティ







ただし、このすべての機能は、テスト用のプロトタイプと見なす必要があります 。 開発者は、最初のリリースではパフォーマンスと完全性が優先事項ではなく、今後のリリースでも作業が継続すると報告しています。







Xプロトコル/ DevAPI /シェル



MySQL 8の場合、開発者は新しいプロトコルとAPIの広範な計画を立てています。









クエリオプティマイザー



MySQL 8のクエリオプティマイザーは、おそらく私の記憶の中で最も重要な変更を受け取ります。









私が理解しているように、このリストは最終的なものではなく、他の「高度な」SQL機能も考慮され、JSONの機能とインデックスが改善されています。







ちなみに、MariaDBユーザーはバージョン10.0以降のヒストグラムを使用できます。また、MySQL 8より前にリリースされる可能性が高いMariaDB 10.2には、ウィンドウ関数とCTE(まだ再帰的ではありません)が計画されています。







グループ複製



Galera Clusterに相当する Oracleは、 Group Replicationと呼ばれます。 予備リリースはすでにプラグインとして利用可能です。 私が理解しているように、MySQL 8の出現のために安定版リリースが計画されています。開発者は、予備リリースよりもさらに速く、便利で、より安定することを除いて、計画機能に関する詳細を報告しませんでした。







さようなら、MyISAM!



最後に、 すべてのシステムテーブルがInnoDBに移行されます。 したがって、MyISAMはサーバーの観点からは完全に不要になりますが、サボテンが好きな人にはオプションとして利用できます。







データ辞書とアトミックDDL



MySQLの最もよく引用される欠点の1つは、トランザクションデータディクショナリがないことです。 すでに書いたように 、この欠点はかなり不快な結果をもたらします:トランザクションDDLの欠如、 INFORMATION_SCHEMA



への高価なクエリ、メタデータ形式の拡張性の問題、物理バックアップとテーブルロックの問題。







MySQL 8では、これらの問題の少なくとも一部が修正されます。 .frm



ファイルはなくなり、テーブルメタデータは一般的なデータディクショナリのみに保存されます(現在のように、 .frm



およびInnoDBに個別に保存されることはありません)。 つまり、 INFORMATION_SCHEMA



を介した低速アクセスと障害発生時のメタデータの非同期化の問題は過去のものです。 ストレージエンジンは、テーブルの高度な属性を保存できるため、興味深い機能の可能性が広がります。







そして最も重要なこととして、DDLはトランザクションではなくアトミックになります。 つまり、トランザクションでDDLをラップしてMySQL 8にロールバックする機会はまだありません。 ただし、サーバーのクラッシュやレプリケーションの問題が発生した場合、部分的に完了したDDLは表示されなくなります。







その他...



確かにこれは計画された機能の不完全なリストであり、リリースごとに拡張されます。 とりわけ、構成パラメータのデフォルト値の別の改訂が計画されています。 特に、UTF-8はlatin1ではなくデフォルトのエンコーディングになります。







開発者は、クラウドプラットフォームのサポートの改善と、 Log Structured Mergeツリーに基づいた新しいストレージエンジンについても漠然と示唆しています 。 いずれにせよ、MySQL 8はすでに興味深いようです。








All Articles