地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】データディクショナリを調べる

MySQL 8.0 の新機能の一つである「データディクショナリ」についての学び。

dev.mysql.com

データディクショナリとは

MySQLデータディクショナリは、データベースに関するメタデータ(データに関するデータ)を格納するシステムテーブルの集まりです。データディクショナリは、テーブル、ビュー、インデックス、ストアドプロシージャなどのデータベースオブジェクトに関する情報を保持します。これにより、データベースの構造を理解しやすくなり、データベース管理や開発が効率的に行えるようになります。

MySQL 8.0以降では、データディクショナリが導入され、従来のFRMファイルに代わり、データベースオブジェクトのメタデータがインメモリで管理されるようになりました。これにより、パフォーマンスの向上やデータベースの管理がより簡単になるなどのメリットがあります。

データディクショナリを使用することで、データベースに関する詳細な情報を簡単に取得できます。たとえば、INFORMATION_SCHEMAデータベースをクエリすることで、テーブルの構造、列のデータ型、インデックス情報などを確認できます。これは、データディクショナリを利用したデータベースの自己記述的な特性の一例です。

MySQLデータディクショナリは、データベースシステムの中核的な部分であり、データベース管理システム(DBMS)の性能と信頼性を支える重要な役割を担っています。

gihyo.jp

何が嬉しいのか

アトミックDDLが嬉しいように思える。MySQL 8.0 では、アトミックデータ定義言語 (DDL) ステートメントがサポートされたというのも5.7まではアトミックじゃなかったのでクラッシュした際にまあ大変なことになるのは容易である(一部の変更が完全には反映されず、データベースの状態が不整合に陥る可能性があった)。それがatomicになることでクラッシュしても問題がないようになった。ただクラッシュセーフになるだけでトランザクショナルではないのでrollbackができたりするわけではないようだ。つまり成功した場合はその内容が反映されるということになる。

ポスグレだと

MySQLではできないロールバックまで実行可能。

everything-you-do-is-practice.blogspot.com