MySQL 8.4 参考手册  /  MySQL 数据字典  /  字典对象缓存

16.4 字典对象缓存

字典对象缓存是一个共享的全局缓存,它将先前访问过的数据字典对象存储在内存中,以实现对象重用并最大程度地减少磁盘 I/O。类似于 MySQL 使用的其他缓存机制,字典对象缓存使用基于 LRU 的驱逐策略来从内存中驱逐最少最近使用过的对象。

字典对象缓存包含存储不同对象类型的缓存分区。一些缓存分区大小限制是可配置的,而其他一些是硬编码的。

  • 表空间定义缓存分区: 存储表空间定义对象。 tablespace_definition_cache 选项设置了可以存储在字典对象缓存中的表空间定义对象的数量限制。默认值为 256。

  • 模式定义缓存分区: 存储模式定义对象。 schema_definition_cache 选项设置了可以存储在字典对象缓存中的模式定义对象的数量限制。默认值为 256。

  • 表定义缓存分区: 存储表定义对象。对象限制设置为 max_connections 的值,默认值为 151。

    表定义缓存分区与使用 table_definition_cache 配置选项配置的表定义缓存并行存在。两种缓存都存储表定义,但服务于 MySQL 服务器的不同部分。一个缓存中的对象与另一个缓存中对象的是否存在无关。

  • 存储程序定义缓存分区: 存储存储程序定义对象。 stored_program_definition_cache 选项设置了可以存储在字典对象缓存中的存储程序定义对象的數量限制。默认值为 256。

    存储程序定义缓存分区与使用 stored_program_cache 选项配置的存储过程和存储函数缓存并行存在。

    stored_program_cache 选项设置了每个连接缓存的存储过程或函数数量的软上限,并且在连接执行存储过程或函数时每次都会检查该限制。另一方面,存储程序定义缓存分区是一个共享缓存,用于为其他目的存储存储程序定义对象。存储程序定义缓存分区中对象的是否存在与存储过程缓存或存储函数缓存中对象的是否存在无关,反之亦然。

  • 字符集定义缓存分区: 存储字符集定义对象,并具有硬编码对象限制 256。

  • 排序规则定义缓存分区: 存储排序规则定义对象,并具有硬编码对象限制 256。

有关字典对象缓存配置选项的有效值的更多信息,请参阅 第 7.1.8 节,“服务器系统变量”