• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 序列化字典信息(SDI)

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

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

    SDI数据通过表或上的DDL操作更新CHECK TABLE FOR UPGRADE。将MySQL服务器升级到新版本时,不会更新SDI数据。

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

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

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

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

    IMPORT TABLE语句MyISAM根据.sdi文件中包含的信息导入表。有关更多信息,请参见“ IMPORT TABLE语句”。