table_definition_cache - xiaoboluo768/qianjinliangfang GitHub Wiki
- 与table_open_cache作用类似,但是是缓存表定义文件.frm的数量。5.6.8之前的默认值是400,之后版本默认是自动计算的,计算公式(400 + (table_open_cache / 2)),表定义缓存比table_open_cache使用更少的空间,且不使用文件描述符。
- 对于InnoDB来说,table_definition_cache可以对InnoDB数据字典缓存中打开的表实例数量进行软限制。即,如果打开的表实例的数量超过table_definition_cache设置,则LRU机制标记表实例并最终从数据字典缓存中删除。该限制有助于解决大量内存被用于缓存极少使用的表实例的情况,注意:具有缓存元数据的表实例数可能高于table_definition_cache定义的限制,因为带有外键关系的InnoDB系统表实例和具有父子关系的表实例不会放在LRU列表上,无法通过从内存中逐出这些表实例来减少table_definition_cache的数量。
- 此外,table_definition_cache对单个InnoDB文件一次可以打开表的数量也具有软限制,且innodb_open_files也同时控制这个数量。如果同时设置了table_definition_cache和innodb_open_files,则使用两者最高值设置。如果两者都没有显式设置,则使用具有较高缺省值的table_definition_cache。如果打开的表空间文件句柄数超过table_definition_cache或innodb_open_files定义的限制,则LRU机制在表空间文件LRU列表中搜索已完全刷新并且当前长时间未使用的文件。每次打开新的表空间时都会执行此过程。如果存在“非活动”表空间就会执行关闭表空间文件。
- 默认值为-1,表示自动计算,整型值。全局变量,动态变量,固定值取值范围为:400~524288
上一篇:table_open_cache | 下一篇:read_buffer_size