16.1 Схема словаря данных
Таблицы словаря данных защищены и могут быть доступны только в отладочных сборках MySQL. Однако MySQL поддерживает доступ к данным, хранящимся в таблицах словаря данных, через таблицы INFORMATION_SCHEMA и операторы SHOW. Обзор таблиц, составляющих словарь данных, см. в таблицах словаря данных.
Системные таблицы MySQL по-прежнему существуют в MySQL 8.4 и могут быть просмотрены с помощью оператора SHOW TABLES в базе данных системы mysql. В целом, разница между таблицами словаря данных MySQL и системными таблицами заключается в том, что таблицы словаря данных содержат метаданные, необходимые для выполнения SQL-запросов, а системные таблицы содержат вспомогательные данные, такие как информация о часовых поясах и справки. Системные таблицы и таблицы словаря данных MySQL также различаются по способу обновления. Обновление словаря данных управляется сервером MySQL. См. Как обновляется словарь данных. Для обновления системных таблиц MySQL необходимо выполнить полную процедуру обновления MySQL. См. Раздел 3.4, «Что обновляет процесс обновления MySQL».
Как обновляется словарь данных
Новые версии MySQL могут содержать изменения в определениях таблиц словаря данных. Такие изменения присутствуют в вновь установленных версиях MySQL, но при выполнении обновления MySQL «на месте» изменения применяются при перезапуске сервера MySQL с использованием новых бинарных файлов. При запуске версия словаря данных сервера сравнивается с информацией о версии, хранящейся в словаре данных, чтобы определить, следует ли обновлять таблицы словаря данных. Если обновление необходимо и поддерживается, сервер создаёт таблицы словаря данных с обновлёнными определениями, копирует сохранённые метаданные в новые таблицы, атомарно заменяет старые таблицы новыми и повторно инициализирует словарь данных. Если обновление не требуется, запуск продолжается без обновления таблиц словаря данных.
Обновление таблиц словаря данных — атомарная операция, что означает, что все таблицы словаря данных обновляются по мере необходимости или операция завершается с ошибкой. Если операция обновления завершается ошибкой, запуск сервера завершается с ошибкой. В этом случае старые бинарные файлы сервера могут быть использованы со старым каталогом данных для запуска сервера. При повторном использовании новых бинарных файлов сервера для запуска сервера попытка обновления словаря данных повторяется.
Как правило, после успешного обновления таблиц словаря данных невозможно перезапустить сервер, используя старые бинарные файлы сервера. В результате, откат бинарных файлов сервера MySQL до предыдущей версии MySQL не поддерживается после обновления таблиц словаря данных.
Просмотр таблиц словаря данных с помощью отладочной сборки MySQL
Таблицы словаря данных по умолчанию защищены, но к ним можно получить доступ, скомпилировав MySQL с поддержкой отладки (используя -DWITH_DEBUG=1 опцию CMake) и указав опцию +d,skip_dd_table_access_check debug и модификатор. Сведения о компиляции отладочных сборок см. в Разделе 7.9.1.1, «Компиляция MySQL для отладки».
Изменение или запись в таблицы словаря данных напрямую не рекомендуется и может привести к невозможности работы вашей инстанции MySQL.
После компиляции MySQL с поддержкой отладки используйте этот оператор SET, чтобы сделать таблицы словаря данных видимыми для сеанса клиента mysql:
mysql> SET SESSION debug='+d,skip_dd_table_access_check';
Используйте этот запрос для получения списка таблиц словаря данных:
mysql> SELECT name, schema_id, hidden, type FROM mysql.tables where schema_id=1 AND hidden='System';
Используйте SHOW CREATE TABLE для просмотра определений таблиц словаря данных. Например:
mysql> SHOW CREATE TABLE mysql.catalogs\G
© 2025 Oracle
Licensed under the GPLv2 License.