MySQL 8.4 Release Notes
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”。