MySQL 8.0 参考手册  / 第14章MySQL数据字典  /  14.6 序列化词典信息(SDI)

14.6 序列化词典信息(SDI)

除了在数据字典中存储关于数据库对象的元数据外,MySQL 还以序列化的形式存储它。此数据称为序列化字典信息 (SDI)。 InnoDB将 SDI 数据存储在其表空间文件中。NDBCLUSTER将 SDI 数据存储在 NDB 字典中。其他存储引擎将 SDI 数据存储 .sdi在为表的数据库目录中的给定表创建的文件中。SDI 数据以紧凑JSON格式生成。

序列化字典信息 (SDI) 存在于 InnoDB除临时表空间和撤消表空间文件之外的所有表空间文件中。表空间文件中的 SDI 记录 InnoDB仅描述表空间中包含的表和表空间对象。

SDI 数据由表或 CHECK TABLE FOR UPGRADE. 当 MySQL 服务器升级到新版本或版本时,SDI 数据不会更新。

SDI 数据的存在提供了元数据冗余。例如,如果数据字典变得不可用,则可以使用ibd2sdi工具 直接从InnoDB 表空间文件中提取对象元数据。

对于InnoDB,SDI 记录需要单个索引页,默认情况下大小为 16KB。但是,SDI 数据经过压缩以减少存储占用空间。

对于InnoDB由多个表空间组成的分区表,SDI 数据存储在第一个分区的表空间文件中。

MySQL 服务器使用在DDL操作 期间访问的内部 API 来创建和维护 SDI 记录。

IMPORT TABLE语句 MyISAM根据文件中包含的信息导入表 .sdi。有关详细信息,请参阅 第 13.2.5 节,“IMPORT TABLE 语句”