• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • INFORMATION_SCHEMA和数据字典集成

    随着数据字典的引入,以下INFORMATION_SCHEMA表被实现为数据字典表的视图:

    • CHARACTER_SETS
    • CHECK_CONSTRAINTS
    • COLLATIONS
    • COLLATION_CHARACTER_SET_APPLICABILITY
    • COLUMNS
    • COLUMN_STATISTICS
    • EVENTS
    • FILES
    • INNODB_COLUMNS
    • INNODB_DATAFILES
    • INNODB_FIELDS
    • INNODB_FOREIGN
    • INNODB_FOREIGN_COLS
    • INNODB_INDEXES
    • INNODB_TABLES
    • INNODB_TABLESPACES
    • INNODB_TABLESPACES_BRIEF
    • INNODB_TABLESTATS
    • KEY_COLUMN_USAGE
    • KEYWORDS
    • PARAMETERS
    • PARTITIONS
    • REFERENTIAL_CONSTRAINTS
    • RESOURCE_GROUPS
    • ROUTINES
    • SCHEMATA
    • STATISTICS
    • ST_GEOMETRY_COLUMNS
    • ST_SPATIAL_REFERENCE_SYSTEMS
    • TABLES
    • TABLE_CONSTRAINTS
    • TRIGGERS
    • VIEWS
    • VIEW_ROUTINE_USAGE
    • VIEW_TABLE_USAGE

    这些表上的查询现在更加高效,因为它们从数据字典表中获取信息,而不是通过其他较慢的方式获取信息。特别是,对于INFORMATION_SCHEMA作为数据字典表视图的每个表:

    • 服务器不再必须为表的每个查询创建一个临时INFORMATION_SCHEMA表。
    • 当基础数据字典表存储先前通过目录扫描(例如,枚举数据库中的数据库名称或表名)或文件打开操作(例如,从.frm文件中读取信息)INFORMATION_SCHEMA获得的值时,现在使用表查询这些值查找。(此外,即使对于非视图INFORMATION_SCHEMA表,也可以通过查找从数据字典中检索数据库和表名之类的值,并且不需要目录或文件扫描。)
    • 基础数据字典表上的索引允许优化器构造有效的查询执行计划,对于以前INFORMATION_SCHEMA使用每个查询使用临时表处理该表的实现,这是不正确的。

    前面的改进还适用于SHOW显示与作为INFORMATION_SCHEMA数据字典表视图的表相对应的信息的语句。例如,SHOW DATABASES显示与SCHEMATA表相同的信息。

    除了引入有关数据字典表的视图之外,现在还缓存了STATISTICSTABLES表中包含的表统计信息,以提高INFORMATION_SCHEMA查询性能。该information_schema_stats_expiry系统变量定义缓存表统计到期之前的一段时间。默认值为86400秒(24小时)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时将从存储引擎中检索统计信息。要随时更新给定表的缓存值,请使用ANALYZE TABLE

    information_schema_stats_expiry可以设置为0INFORMATION_SCHEMA查询直接从存储引擎检索最新统计信息,其速度不及检索缓存的统计信息。

    有关更多信息,请参见“优化INFORMATION_SCHEMA查询”。

    INFORMATION_SCHEMAMySQL 8.0中的表与数据字典紧密相关,因此在用法上存在一些差异。