jumper

コラム

MySQL 8.0

2018年12月14日
MySQLのアクセス権限システム

MySQL8.0は単なるバージョンが進んだレベルにとどまらない進化をとげています。
従来のバージョンが5.7でしたが、一気に8.0となったのは名称だけの変化ではなく、その中身が異なるものとなったからかもしれません。まずはMySQL8.0の特徴をみていきましょう。

MySQL 8.0の特徴

MySQL8.0ではパフォーマンスの向上と、新しく導入された機能がいくつかあります。代表的なものをあげてみると、NoSQL、CTE、ウィンドウ関数、SET PERSIST、そしてクライアントが直接サーバを再起動するなどの操作ができるようになっています。

NoSQL機能
RDBMSが主流の現代のデータベースですが、一方でNoSQL(Not only SQL)というデータベースも存在します。MySQL8.0では従来のRDBMSを踏襲しつつ、NoSQLも利用できるという、ハイブリッドなものになっています。NoSQLは他のテーブルとの関係性がない分、高速が実現できますので、使い方によってはRDBMSより高いパフォーマンスを発揮します。
CTE(Common Table Expressions)
ある特定のSQL文を関数のように別名をつけて定義できます。この関数名を呼び出すことで、別のSQL文に、ネストせずに特定のSQL文を実行することができます。
SET PERSIST
MySQL8.0以前では、サーバの設定を変更する際はSET構文でのコマンド実行か、my.cnfの変更でした。コマンドでの変更はサーバが再起動するとmy.cnfの設定が上書きするので、初期化されてしまいます。SET PERSIST構文でのコマンド実行は、そのまま変更が永続されるので、サーバの再起動でも初期化されません。
クライアントがサーバを直接操作できる
MySQLサーバの起動や停止などの操作は、通常サーバにログインしてサービス実行を行います。MySQL8.0ではクライアントからサーバの起動・停止を実行することが可能です。もちろん実行権限を付与されたクライアントに限定されますが、この機能によって複数のサーバを同時に再起動することができます。

他にも変更点や特徴はありますが、列記した機能をみると、運用面が各段に向上する機能になっていることが分かります。ウィンドウ関数は別章で説明いたします。

パフォーマンスの向上

MySQL8.0での特徴のひとつはパフォーマンスの圧倒的な向上にあります。MySQL 5.7と比べると2倍の高パフォーマンスをあげることができます。

MySQL8.0ではテーブル設計を大きく見直しており、主要なスキーマのエンジンはほぼInnoDBになっています。これによって障害にも強いRDBMSとなっており、InnoDBの更なる改良によって大きなパフォーマンスを生み出しています。
現在、Google、Twitter、Facebook、Uberなど巨大なトラフィックを相手にしているサービスが、このMySQLを活用していることからも、高い信頼性とパフォーマンスを実現していることが分かります。

ウィンドウ関数

まずウィンドウ関数(分析関数)とはどんなものでしょうか。

集合関数に似た機能ですが、分析関数ともいいます。集合関数と同様に、集計を行うのですが、集合関数はその結果を1行で表示します。対してウィンドウ関数では全ての行についても集計結果を表示させます。これによって分析が大変しやすくなっています。
この機能は他の主要なRDBMSではすでに実用化されており、その便利さからMySQLでも要望の高かったものといえます。ましてやビッグデータを扱うことが必須の現代のビジネスでは、詳細な分析を手軽に早く実現する必要があります。ウィンドウ関数の導入によってMySQLは、より使いやすいデータベースに進化したといえます。

まとめ

MySQLではMySQL6.0がさまざまな理由から開発が止まっており、MySQL7.0はMySQL NDB Clusterがすでに存在するため、最終的にMySQL8.0となったといいます。

MySQL8.0は2018年4月にリリースされてから、多くのデータベースエンジニアから注目されていますが、その評価も大変高いものといえます。5.7から大きく変わったため、それまでのユーザも慣れるまで時間がかかるかもしれませんが、今後の案件では必ず検討するべき選択肢ではないでしょうか。


ソフトエイジェンシー関連製品URL

https://www.softagency.co.jp/products/mysql

CONTACT

製品・サービスに関するご質問、お見積もり、お問い合わせなど、お気軽にご連絡ください。

 050-5505-5509

受付時間 9:30 - 12:00, 13:00 - 17:00
(土日祝および年末年始を除く)