MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL 8.0の新機能とは?注目すべき7つのポイントを徹底解説

MySQLは単体でも非常に強力なデータベース管理システムであり、高価で高性能な商用データベース製品が備える機能の大部分をカバーしています。標準的なSQLデータ言語を採用しており、2018年4月19日にリリースされたMySQL 8.0は、現在8.0.23が最新バージョンとして提供されています。

本記事では、MySQL 8.0に導入された主な新機能について、わかりやすく解説します。

アトミックDDL(Atomic DDL)

アトミックDDLステートメントにより、データディクショナリへの更新やストレージエンジンの操作などが、ひとつの不可分な処理として統合されました。これにより、DDL実行中に障害が発生した場合でもデータベースの一貫性が保たれ、安全性が大幅に向上しています。

暗号化デフォルト(Encryption Defaults)

テーブル暗号化に関するデフォルト設定が、グローバルに定義・実装されました。新規作成されるスキーマに対する暗号化のデフォルト値は「default_table_encryption」変数によって定義できます。さらに、スキーマ作成時に「DEFAULT ENCRYPTION」句を指定することで、スキーマ単位でのデフォルト暗号化設定も可能です。

リソースグループ(Resource Groups)

リソースグループの作成と管理が可能になり、サーバー内で稼働するスレッドを特定のグループのリソースへ割り当てられるようになりました。グループ属性を活用することで、リソースの制御や、スレッドによるリソース消費の許可・制限などを柔軟に行えます。

デフォルト文字セットの変更

バージョンアップに伴い、デフォルトの文字セットが「latin1」から「utf8mb4」へ変更されました。新しい文字セット「utf8mb4」には複数の照合順序が用意されており、その中には「utf8mb4_ja_0900_as_cs」も含まれています。これはMySQLにおいてUnicode向けに提供された初の日本語固有の照合順序であり、日本語を扱うアプリケーション開発にとって大きなメリットとなります。

JSON機能の強化

JSON関連機能も強化されました。インラインパス演算子「->>」が追加され、「JSON_EXTRACT()」関数の結果に対して「JSON_UNQUOTE()」関数を呼び出すのと同等の処理を、より簡潔に記述できるようになりました。

DBAへの制御権限の拡大

DBA(データベース管理者)には、ワークロードに応じて属性を変更する権限が与えられました。サーバーが利用可能な仮想CPUを判定し、必要な権限を持つDBAは、それらのCPUを特定のリソースグループやスレッドに割り当てて運用を最適化できます。

アップグレード手順の改善

アップグレードの手順も刷新され、従来「mysql_upgrade」が担当していたタスクをサーバー自身が処理するようになりました。必要なアップグレード作業はすべて自動的に実行されるため、管理者の負担が軽減されています。


  1. C#に欠けているC++の機能とは?両言語の主な違いを徹底解説

    C#は、Microsoftがアンダース・ヘルスバーグ(Anders Hejlsberg)の主導のもと、.NET構想の一環として開発した、シンプルでモダンな汎用オブジェクト指向プログラミング言語です。一方のC++は、1979年にベル研究所でビャーネ・ストロヴストルップ(Bjarne Stroustrup)によって開発が始められた中間レベルのプログラミング言語で、WindowsやmacOS、さまざまなUNIX系OSなど、幅広いプラットフォーム上で動作します。C#に存在しないC++の主な機能C++にはありながら、C#では実現できない、あるいは扱いが異なる主なポイントは以下のとおりです。多重継承:C+

  2. Java 9のStream APIに追加された新機能4選!iterate・ofNullable・takeWhile・dropWhileを徹底解説

    Java 9では、Oracle社がStream APIに便利な新メソッドを4つ追加しました。それらはiterate()、ofNullable()、takeWhile()、dropWhile()です。本記事では、それぞれのメソッドの特徴と使い方を、実際のコード例と実行結果とともにわかりやすく解説します。 iterate() iterate()メソッドは、従来のforループの代替として使えるストリーム版のメソッドです。Java 9では引数が1つ追加され、第2引数にPredicateインターフェースを指定できるようになりました。これにより、無限に生成され続ける数値を、条件に基づいて適切なタイミングで