Spec-Zone.ru › MySQL 9.2

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

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

Системные таблицы MySQL по-прежнему существуют в MySQL 9.2 и могут быть просмотрены с помощью оператора 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/data-dictionary-schema.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API