MySQL 8.4 Reference Manual  /  MySQL Data Dictionary  /  Serialized Dictionary Information (SDI)

16.6 Serialized Dictionary Information (SDI)

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

序列化字典信息(SDI)在所有InnoDB表空间文件中都存在,除了临时表空间和回滚表空间文件。SDI记录在InnoDB表空间文件中只描述了表和表空间对象,它们包含在表空间中。

SDI数据由DDL操作在表或CHECK TABLE FOR UPGRADE更新。SDI数据在MySQL服务器升级到新版本时不被更新。

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

对于InnoDB,SDI记录需要单个索引页面,该页面默认大小为16KB。然而,SDI数据被压缩以减少存储 footprint。

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

MySQL服务器使用内部API访问该API以在DDL操作中创建和维护SDI记录。

IMPORT TABLE语句将基于.sdi文件中的信息导入MyISAM表。更多信息,请见Section 15.2.6,“IMPORT TABLE Statement”