## 14.5 信息\_SCHEMA 和数据字典集成

[](<>)

随着数据字典的引入，以下[`INFORMATION_SCHEMA`](information-schema.html)表被实现为数据字典表的视图：

-   [`CHARACTER_SETS`](information-schema-character-sets-table.html)

-   [`CHECK_CONSTRAINTS`](information-schema-check-constraints-table.html)

-   [`校对`](information-schema-collations-table.html)

-   [`COLLATION_CHARACTER_SET_APPLICABILITY`](information-schema-collation-character-set-applicability-table.html)

-   [`列`](information-schema-columns-table.html)

-   [`COLUMN_STATISTICS`](information-schema-column-statistics-table.html)

-   [`活动`](information-schema-events-table.html)

-   [`文件`](information-schema-files-table.html)

-   [`INNODB_COLUMNS`](information-schema-innodb-columns-table.html)

-   [`INNODB_DATAFILES`](information-schema-innodb-datafiles-table.html)

-   [`INNODB_FIELDS`](information-schema-innodb-fields-table.html)

-   [`INNODB_FOREIGN`](information-schema-innodb-foreign-table.html)

-   [`INNODB_FOREIGN_COLS`](information-schema-innodb-foreign-cols-table.html)

-   [`INNODB_INDEXES`](information-schema-innodb-indexes-table.html)

-   [`INNODB_TABLES`](information-schema-innodb-tables-table.html)

-   [`INNODB_TABLESPACES`](information-schema-innodb-tablespaces-table.html)

-   [`INNODB_TABLESPACES_BRIEF`](information-schema-innodb-tablespaces-brief-table.html)

-   [`INNODB_TABLESTATS`](information-schema-innodb-tablestats-table.html)

-   [`KEY_COLUMN_USAGE`](information-schema-key-column-usage-table.html)

-   `关键词`

-   [`参数`](information-schema-parameters-table.html)

-   [`分区`](information-schema-partitions-table.html)

-   [`REFERENTIAL_CONSTRAINTS`](information-schema-referential-constraints-table.html)

-   [`RESOURCE_GROUPS`](information-schema-resource-groups-table.html)

-   [`例行公事`](information-schema-routines-table.html)

-   [`图式`](information-schema-schemata-table.html)

-   [`统计数据`](information-schema-statistics-table.html)

-   [`ST_GEOMETRY_COLUMNS`](information-schema-st-geometry-columns-table.html)

-   [`ST_SPATIAL_REFERENCE_SYSTEMS`](information-schema-st-spatial-reference-systems-table.html)

-   [`表格`](information-schema-tables-table.html)

-   [`TABLE_CONSTRAINTS`](information-schema-table-constraints-table.html)

-   [`触发器`](information-schema-triggers-table.html)

-   [`意见`](information-schema-views-table.html)

-   [`VIEW_ROUTINE_USAGE`](information-schema-view-routine-usage-table.html)

-   [`VIEW_TABLE_USAGE`](information-schema-view-table-usage-table.html)

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

-   服务器不再必须为每个查询创建一个临时表`INFORMATION_SCHEMA`桌子。

-   当底层数据字典表存储先前通过目录扫描（例如，枚举数据库名称或数据库中的表名）或文件打开操作（例如，从`.frm`文件），`INFORMATION_SCHEMA`对这些值的查询现在改为使用表查找。（此外，即使对于非视图`INFORMATION_SCHEMA`表，诸如数据库和表名之类的值是通过从数据字典中查找来检索的，不需要目录或文件扫描。）

-   底层数据字典表上的索引允许优化器构建有效的查询执行计划，这对于处理`INFORMATION_SCHEMA`每个查询使用一个临时表的表。

    上述改进也适用于[`显示`](show.html)显示信息对应的语句`INFORMATION_SCHEMA`作为数据字典表的视图的表。例如，[`显示数据库`](show-databases.html)显示相同的信息[`图式`](information-schema-schemata-table.html)桌子。

    除了引入数据字典表的视图外，包含在数据字典表中的表统计信息[`统计数据`](information-schema-statistics-table.html)和[`表格`](information-schema-tables-table.html)表现在被缓存以改进[`INFORMATION_SCHEMA`](information-schema.html)查询性能。这[`information_schema_stats_expiry`](server-system-variables.html#sysvar_information_schema_stats_expiry)系统变量定义缓存表统计信息过期之前的时间段。默认值为 86400 秒（24 小时）。如果没有缓存的统计信息或统计信息已过期，则在查询表统计信息列时从存储引擎中检索统计信息。要随时更新给定表的缓存值，请使用[`分析表`](analyze-table.html)

[`information_schema_stats_expiry`](server-system-variables.html#sysvar_information_schema_stats_expiry)可以设置为`0`拥有[`INFORMATION_SCHEMA`](information-schema.html)查询直接从存储引擎中检索最新的统计信息，这不如检索缓存的统计信息快。

有关详细信息，请参阅[第 8.2.3 节，“优化信息\_SCHEMA 查询”](information-schema-optimization.html).

`INFORMATION_SCHEMA`MySQL 8.0 中的表与数据字典密切相关，导致了一些使用差异。看[第 14.7 节，“数据字典使用差异”](data-dictionary-usage-differences.html).
