如何检查我当前的数据字典缓存大小?
仅供参考: ->数据字典缓存-存储打开的表信息。因此,数据字典缓存的增加取决于打开表的数量。
-> table_open_cache是一个变量,其值是mysql可以具有打开表的总数。我问有打开表数据的当前数据字典大小。 (当前数据字典大小的状态)。
MySql版本-5.7.18
答案 0 :(得分:0)
可以存储在定义高速缓存中的表定义的数量。如果使用大量表,则可以创建大表定义缓存以加快表打开速度。与普通表缓存不同,表定义缓存占用的空间更少,并且不使用文件描述符。最小值为400。默认值基于以下公式,上限为2000:
MIN(400 + table_open_cache / 2, 2000)
更多详细信息,请点击此处https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_table_definition_cache
答案 1 :(得分:0)
这些变量可能是相关的:
table_open_cache
table_open_cache_instances
table_definition_cache
schema_definition_cache (new in 8.0)
tablespace_definition_cache (new in 8.0)
每个高速缓存是固定大小的,可以在启动时配置。 (在某些情况下,在新版本上,它可以动态更改。)5.7的文档例如说table_open_cache
是“动态”
这些GLOBAL STATUS值可能是相关的:
Open_table_definitions
Opened_table_definitions
Opened_tables
Opened_files
Table_open_cache_hits
Table_open_cache_misses
Table_open_cache_overflows
点击次数/丢失次数/溢出次数为您提供了有关table_open_cache
是否足够大的最佳线索,但不是最佳大小的线索。
在5.7及更低版本中,数据字典来自分散在磁盘上的.frm
文件。在8.0中,它位于一组InnoDB表中。据推测,一个合适的查询可以提供一些相关指标。
另请参阅performance_schema_max_table_handles之类的内容。