MySQL 8.4 Reference Manual  /  MySQL Data Dictionary  /  Dictionary Object Cache

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节,“服务器系统变量”