Глава 15. Словарь данных MySQL

MySQL Server теперь включает транзакционный словарь данных, который хранит информацию об объектах базы данных. В предыдущих выпусках MySQL данные о словаре хранились в метафайлах с данными и нетранзакционных таблицах.

Эта глава описывает основные особенности, выгоду, различия в использовании и ограничения словаря данных. Для информации о других возможностях словаря данных, обратитесь к разделу Data Dictionary Notes ресурса MySQL 8.0.0 Release Notes.

InnoDB продолжает использовать собственный словарь данных в MySQL 8.0.0.

Выгода словаря данных MySQL включает:

Данные, включенные сервером в словарь, влекут за собой некоторые общие операционные различия; см. раздел 15.6. Кроме того, для обновлений до MySQL 8.0 от MySQL 5.7, процедура обновления несколько отличается от предыдущего релиза и требует, чтобы Вы проверили готовность обновления своей установки, проверяя определенные предпосылки. Для получения дополнительной информации, см. раздел 2.10.1.

15.1. Схема словаря данных

Таблицы словаря данных невидимы и доступ к ним не может быть получен непосредственно. Однако, доступ к данным, хранящимся в таблицах словаря данных, поддержан через операторы INFORMATION_SCHEMA и SHOW.

Системные таблицы MySQL все еще существуют в MySQL 8.0 и могут быть просмотрены через SHOW TABLES в системной базе данных mysql. Вообще, различие между системными таблицами MySQL и таблицами словаря данных в том, что системные таблицы содержат вспомогательные данные, такие как часовой пояс и справочная информация, в то время как таблицы словаря данных содержат данные, требуемые, чтобы выполнять запросы SQL. Системные таблицы MySQL и таблицы словаря данных также отличаются по тому, как они обновлены. Обновление системных таблиц MySQL требует выполнения mysql_upgrade. Обновлениями словаря данных управляет сервер MySQL.

15.2. Удаление основанного на файлах хранения метаданных

В предыдущих выпусках MySQL данные о словаре частично хранились в метафайлах с данными. Проблемы с основанным на файлах хранением метаданных включали дорогие просмотры файла, восприимчивость к связанным с файловой системой ошибкам, сложному коду для того, чтобы обработать репликации и статусы отказа, и нехватку расширяемости, которая мешала добавлять метаданные для новых особенностей и относительных объектов.

Упомянутые ниже метафайлы с данными удалены из MySQL. Если не указано иное, данные, ранее сохраненные в метафайлах с данными, теперь хранятся в таблицах словаря данных.

15.3. Транзакционное хранение данных словаря

Схема словаря данных хранит данные словаря в транзакционных (InnoDB) таблицах, созданных в виде файла на таблицу. Файлы табличного пространства словаря данных расположены в каталоге базы данных mysql вместе с системными таблицами. Данные словаря теперь защищены теми же способами, которые защищают пользовательские данные в таблицах InnoDB.

15.4. Кэш объектов словаря

Кэш объектов словаря это совместно используемый глобальный кэш, который хранит объекты словаря данных, к которым ранее получали доступ, в памяти, чтобы включить повторное использование объекта и минимизировать дисковый ввод/вывод. Подобный другим механизмам кэша, используемым MySQL, кэш объектов словаря использует стратегию LRU для сохранения последних использованных объектов в памяти.

Кэш объектов словаря включает разделы кэша, которое хранит различные типы объектов. Некоторые пределы размеров разделения кэша конфигурируемы.

15.5. Интеграция INFORMATION_SCHEMA и словаря данных

С введением словаря данных следующие таблицы INFORMATION_SCHEMA осуществлены как представления таблиц словаря данных:

Запросы на тех таблицах теперь более эффективны, потому что они получают информацию из таблиц словаря данных, а не другими, более медленными, средствами. В частности, для каждой таблицы INFORMATION_SCHEMA, которая является представлением таблицы словаря данных:

Некоторые типы значений, даже для таблиц INFORMATION_SCHEMA, которые не являются представлениями, получены из словаря данных. Это включает такие значения, как имена базы данных и таблиц, табличные типы и механизмы хранения.

Предыдущие усовершенствования также относятся к запросу SHOW, отображающем информацию о таблицах. Например, SHOW DATABASES выводит на экран ту же самую информацию, что и таблица SCHEMATA.

В дополнение к введению представлений таблиц словаря данных, табличные метаданные, содержавшиеся в таблицах STATISTICS и TABLES теперь кэшируются, чтобы улучшить производительность запросов INFORMATION_SCHEMA. Кэшированием табличных метаданных управляет параметр конфигурации information_schema_stats, который по умолчанию установлен в CACHED. Кэшируемые табличные метаданные обновлены командой ANALYZE TABLE.

information_schema_stats может быть установлен в LATEST, чтобы запросы INFORMATION_SCHEMA получали последние метаданные непосредственно от механизма хранения, с такой скоростью, с какой не получают кэшируемые табличные метаданные.

15.6. Различия в использовании словаря данных

Использование данных, включенных в словарь сервером MySQL, влечет за собой некоторые операционные различия по сравнению с сервером, у которого нет словаря данных.

15.7. Ограничения словаря данных

Этот раздел описывает временные ограничения словаря данных MySQL.