随着数据字典的介绍,下面INFORMATION_SCHEMA
表被实现为数据字典表的视图:
关键字
对这些表的查询现在效率更高,因为它们从数据字典表获得信息,而不是通过其他较慢的方法。特别是对每一个INFORMATION_SCHEMA
表,它是数据字典表的视图:
类的每个查询,服务器不再必须创建一个临时表
INFORMATION_SCHEMA
表格当底层数据字典表存储以前通过目录扫描(例如,枚举数据库中的数据库名或表名)或文件打开操作(例如,从目录中读取信息)获得的值时
.frm
文件),INFORMATION_SCHEMA
对这些值的查询现在使用表查找代替。(此外,即使是非视图INFORMATION_SCHEMA
表,值,如数据库和表名是通过查找从数据字典检索,不需要目录或文件扫描。)基础数据字典表上的索引允许优化器构造有效的查询执行计划,这对于处理
INFORMATION_SCHEMA
表,每个查询使用临时表。
上述改进也适用于显示
类对应的信息INFORMATION_SCHEMA
表是数据字典表的视图。例如,显示数据库
控件显示相同的信息图式
表格
除了介绍数据字典表的视图外,表的统计信息也包含在统计数据
而且表
表现在被缓存以改进INFORMATION_SCHEMA
查询性能。的information_schema_stats_expiry
系统变量定义缓存表统计信息过期前的时间段。默认值是86400秒(24小时)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时从存储引擎检索统计信息。若要随时更新给定表的缓存值,请使用分析表
information_schema_stats_expiry
可以设置为0
有INFORMATION_SCHEMA
查询直接从存储引擎检索最新的统计信息,这不如检索缓存的统计信息快。
有关更多信息,请参见第8.2.3节“优化INFORMATION_SCHEMA查询”.
INFORMATION_SCHEMA
MySQL 8.0中的表与数据字典紧密相连,导致了一些用法上的差异。看到第14.7节“数据字典使用差异”.