MySQL 8.0 Reference Manual  /  MySQL Data Dictionary  /  INFORMATION_SCHEMA and Data Dictionary Integration

Pre-General Availability Draft: 2017-05-26

15.5 INFORMATION_SCHEMA and Data Dictionary Integration

With the introduction of the data dictionary, the following INFORMATION_SCHEMA tables are implemented as views on data dictionary tables:

Queries on those tables are now more efficient because they obtain information from data dictionary tables rather than by other, slower means. In particular, for each INFORMATION_SCHEMA table that is a view on data dictionary tables:

  • The server no longer must create a temporary table for each query of the INFORMATION_SCHEMA table.

  • When the underlying data dictionary tables store values previously obtained by directory scans (for example, to enumerate database names or table names within databases) or file-opening operations (for example, to read information from .frm files), INFORMATION_SCHEMA queries for those values now use table lookups instead. (Additionally, even for a non-view INFORMATION_SCHEMA table, values such as database and table names are retrieved by lookups from the data dictionary and do not require directory or file scans.)

  • Indexes on the underlying data dictionary tables permit the optimizer to construct efficient query execution plans, something not true for the previous implementation that processed the INFORMATION_SCHEMA table using a temporary table per query.

The preceding improvements also apply to SHOW statements that display information corresponding to the INFORMATION_SCHEMA tables that are views on data dictionary tables. For example, SHOW DATABASES displays the same information as the SCHEMATA table.

In addition to the introduction of views on data dictionary tables, table metadata contained in the STATISTICS and TABLES tables is now cached to improve INFORMATION_SCHEMA query performance. Caching of table metadata is controlled by the information_schema_stats configuration option, which is set to CACHED by default. Cached table metadata is updated by issuing an ANALYZE TABLE statement.

information_schema_stats can be set to LATEST to have INFORMATION_SCHEMA queries retrieve the latest metadata directly from the storage engine, which is not as fast as retrieving cached table metadata.

For more information, see Section 9.2.3, “Optimizing INFORMATION_SCHEMA Queries”.

User Comments
Sign Up Login You must be logged in to post a comment.