MySQL 8.0 リファレンスマニュアル  /  MySQL データディクショナリ  /  シリアライズディクショナリ情報 (SDI)

14.6 シリアライズディクショナリ情報 (SDI)

データベースオブジェクトに関するメタデータをデータディクショナリに格納する以外に、MySQL ではシリアライズされた形式で格納します。 このデータは、シリアライズディクショナリ情報 (SDI) と呼ばれます。 InnoDB では、SDI データはテーブルスペースファイル内に格納されます。 NDBCLUSTER は、SDI データを NDB ディクショナリに格納します。 その他のストレージエンジンは、テーブルデータベースディレクトリ内の特定のテーブルに対して作成された SDI データを .sdi ファイルに格納します。 SDI データは、コンパクトな JSON 形式で生成されます。

シリアライズディクショナリ情報 (SDI) は、一時テーブルスペースおよび undo テーブルスペースファイルを除くすべての InnoDB テーブルスペースファイルに存在します。 InnoDB テーブルスペースファイルの SDI レコードには、テーブルスペース内に含まれるテーブルおよびテーブルスペースオブジェクトのみが記述されます。

SDI データは、テーブルまたは CHECK TABLE FOR UPGRADE に対する DDL 操作によって更新されます。 SDI データは、MySQL サーバーを新しいリリースまたはバージョンにアップグレードしても更新されません。

SDI データが存在すると、メタデータの冗長性が提供されます。 たとえば、データディクショナリが使用できなくなった場合、ibd2sdi ツールを使用して、オブジェクトメタデータを InnoDB テーブルスペースファイルから直接抽出できます。

InnoDB の場合、SDI レコードには単一のインデックスページ (デフォルトでは 16KB) が必要です。 ただし、SDI データは、ストレージフットプリントを削減するために圧縮されます。

複数のテーブルスペースで構成されるパーティション化された InnoDB テーブルの場合、SDI データは最初のパーティションのテーブルスペースファイルに格納されます。

MySQL サーバーは、DDL 操作中にアクセスされる内部 API を使用して SDI レコードを作成および保守します。

IMPORT TABLE ステートメントは、.sdi ファイルに含まれる情報に基づいて MyISAM テーブルをインポートします。 詳細は、セクション13.2.5「IMPORT TABLE ステートメント」を参照してください。


関連キーワード:  SDI, テーブル, データ, スペース, InnoDB, 情報, 格納, シリアライズディクショナリ, メタデータ, ストレージ