Spec-Zone.ru › MySQL 9.2

7.3 Схема mysql системы

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

  • Таблицы словаря данных

  • Системные таблицы предоставления прав

  • Системные таблицы информации об объектах

  • Системные таблицы журналов

  • Системные таблицы справочной системы сервера

  • Системные таблицы часовых поясов

  • Системные таблицы репликации

  • Системные таблицы оптимизатора

  • Разные системные таблицы

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

mysql системные таблицы и таблицы словаря данных находятся в одном файле табличного пространства InnoDB с именем mysql.ibd в каталоге данных MySQL. Ранее эти таблицы создавались в отдельных файлах табличного пространства в каталоге базы данных mysql.

Шифрование данных в состоянии покоя можно включить для табличного пространства схемы системы mysql. Для получения дополнительной информации см. Раздел 17.13, «Шифрование данных InnoDB в состоянии покоя».

Таблицы словаря данных

Эти таблицы составляют словарь данных, который содержит метаданные об объектах базы данных. Дополнительную информацию см. в Главе 16, Словарь данных MySQL.

  • catalogs: Информация о каталоге.

  • character_sets: Информация об доступных наборах символов.

  • check_constraints: Информация о CHECK ограничениях, определенных для таблиц. См. Раздел 15.1.21.6, «Ограничения CHECK».

  • collations: Информация о сопоставлениях для каждого набора символов.

  • column_statistics: Статистика гистограмм значений столбцов. См. Раздел 10.9.6, «Статистика оптимизатора».

  • column_type_elements: Информация о типах, используемых столбцами.

  • columns: Информация о столбцах в таблицах.

  • dd_properties: Таблица, которая идентифицирует свойства словаря данных, такие как его версия. Сервер использует это для определения необходимости обновления словаря данных до более новой версии.

  • events: Информация об событиях планировщика событий. См. Раздел 27.5, «Использование планировщика событий». Если сервер запускается с опцией --skip-grant-tables, планировщик событий отключен, и события, зарегистрированные в таблице, не выполняются. См. Раздел 27.5.2, «Настройка планировщика событий».

  • foreign_keys, foreign_key_column_usage: Информация о внешних ключах.

  • index_column_usage: Информация о столбцах, используемых индексами.

  • index_partitions: Информация о разбиениях, используемых индексами.

  • index_stats: Используется для хранения динамической статистики индексов, генерируемой при выполнении ANALYZE TABLE.

  • indexes: Информация об индексах таблиц.

  • innodb_ddl_log: Хранит логи DDL для операций DDL, безопасных при сбоях.

  • parameter_type_elements: Информация о параметрах хранимых процедур и функций, а также о возвращаемых значениях для хранимых функций.

  • parameters: Информация о хранимых процедурах и функциях. См. Раздел 27.2, «Использование хранимых процедур».

  • resource_groups: Информация о группах ресурсов. См. Раздел 7.1.16, «Группы ресурсов».

  • routines: Информация о хранимых процедурах и функциях. См. Раздел 27.2, «Использование хранимых процедур».

  • schemata: Информация о схемах. В MySQL схема — это база данных, поэтому эта таблица предоставляет информацию о базах данных.

  • st_spatial_reference_systems: Информация о доступных системах пространственных ссылок для пространственных данных.

  • table_partition_values: Информация о значениях, используемых разбиениями таблиц.

  • table_partitions: Информация о разбиениях, используемых таблицами.

  • table_stats: Информация о динамической статистике таблиц, генерируемой при выполнении ANALYZE TABLE.

  • tables: Информация о таблицах в базах данных.

  • tablespace_files: Информация о файлах, используемых табличными пространствами.

  • tablespaces: Информация об активных табличных пространствах.

  • triggers: Информация о триггерах.

  • view_routine_usage: Информация о зависимостях между представлениями и хранимыми функциями, используемыми ими.

  • view_table_usage: Используется для отслеживания зависимостей между представлениями и их базовыми таблицами.

Таблицы словаря данных невидимы. К ним нельзя обратиться с помощью SELECT, они не отображаются в выводе SHOW TABLES, не перечислены в таблице INFORMATION_SCHEMA.TABLES и т. д. Однако в большинстве случаев есть соответствующие INFORMATION_SCHEMA таблицы, к которым можно обратиться. По сути, INFORMATION_SCHEMA предоставляет представление, посредством которого MySQL предоставляет метаданные словаря данных. Например, нельзя напрямую обратиться к таблице mysql.schemata:

mysql> SELECT * FROM mysql.schemata;
ERROR 3554 (HY000): Access to data dictionary table 'mysql.schemata' is rejected.

Вместо этого, выбирайте эту информацию из соответствующей таблицы INFORMATION_SCHEMA:

mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA\G
*************************** 1. row ***************************
              CATALOG_NAME: def
               SCHEMA_NAME: mysql
DEFAULT_CHARACTER_SET_NAME: utf8mb4
    DEFAULT_COLLATION_NAME: utf8mb4_0900_ai_ci
                  SQL_PATH: NULL
        DEFAULT_ENCRYPTION: NO
*************************** 2. row ***************************
              CATALOG_NAME: def
               SCHEMA_NAME: information_schema
DEFAULT_CHARACTER_SET_NAME: utf8mb3
    DEFAULT_COLLATION_NAME: utf8mb3_general_ci
                  SQL_PATH: NULL
        DEFAULT_ENCRYPTION: NO
*************************** 3. row ***************************
              CATALOG_NAME: def
               SCHEMA_NAME: performance_schema
DEFAULT_CHARACTER_SET_NAME: utf8mb4
    DEFAULT_COLLATION_NAME: utf8mb4_0900_ai_ci
                  SQL_PATH: NULL
        DEFAULT_ENCRYPTION: NO
...

Нет таблицы Information Schema, которая точно соответствует mysql.indexes, но INFORMATION_SCHEMA.STATISTICS содержит большую часть той же информации.

Пока нет INFORMATION_SCHEMA таблиц, которые точно соответствуют mysql.foreign_keys, mysql.foreign_key_column_usage. Стандартный способ получения информации о внешних ключах в SQL — использование INFORMATION_SCHEMA таблиц REFERENTIAL_CONSTRAINTS и KEY_COLUMN_USAGE; эти таблицы теперь реализованы как представления на основе таблиц foreign_keys, foreign_key_column_usage и других таблиц словаря данных.

Таблицы системы грантов

Эти системные таблицы содержат информацию о грантах для учетных записей пользователей и привилегиях, которыми они обладают. Для получения дополнительной информации о структуре, содержании и назначении этих таблиц, см. раздел 8.2.3, «Таблицы грантов».

Таблицы грантов MySQL 9.2 являются InnoDB (транзакционными) таблицами. Заявления об управлении учетными записями являются транзакционными и либо выполняются для всех указанных пользователей, либо отменяются и не имеют эффекта, если возникает любая ошибка.

  • user: Учетные записи пользователей, глобальные привилегии и другие столбцы, не являющиеся привилегиями.

  • global_grants: Назначение динамических глобальных привилегий пользователям; см. Статические и динамические привилегии.

  • db: Привилегии на уровне базы данных.

  • tables_priv: Привилегии на уровне таблиц.

  • columns_priv: Привилегии на уровне столбцов.

  • procs_priv: Привилегии на хранимые процедуры и функции.

  • proxies_priv: Привилегии пользователя-прокси.

  • default_roles: Эта таблица перечисляет роли по умолчанию, которые активируются после подключения и аутентификации пользователя или выполнения SET ROLE DEFAULT.

  • role_edges: Эта таблица перечисляет связи для подграфов ролей.

    Строка данной таблицы user может ссылаться на учетную запись пользователя или роль. Сервер может определить, представляет ли строка учетную запись пользователя, роль или оба, обратившись к таблице role_edges для получения информации о связях между идентификаторами аутентификации.

  • password_history: Информация о изменениях пароля.

Таблицы системной информации об объектах

Эти системные таблицы содержат информацию о компонентах, загружаемых функциях и плагинах сервера:

  • component: Реестр компонентов сервера, установленных с помощью INSTALL COMPONENT. Любые компоненты, указанные в этой таблице, устанавливаются службой загрузчика во время последовательности запуска сервера. См. раздел 7.5.1, «Установка и удаление компонентов».

  • func: Реестр загружаемых функций, установленных с помощью CREATE FUNCTION. Во время нормальной последовательности запуска сервер загружает функции, зарегистрированные в этой таблице. Если сервер запускается с опцией --skip-grant-tables, зарегистрированные в таблице функции не загружаются и недоступны. См. раздел 7.7.1, «Установка и удаление загружаемых функций».

    Примечание

    Как и системная таблица mysql.func, таблица Performance Schema user_defined_functions перечисляет загружаемые функции, установленные с помощью CREATE FUNCTION. В отличие от таблицы mysql.func, таблица user_defined_functions также перечисляет функции, установленные автоматически компонентами или плагинами сервера. Это различие делает user_defined_functions предпочтительнее mysql.func для проверки установленных функций. См. раздел 29.12.22.11, «Таблица user_defined_functions».

  • plugin: Реестр плагинов сервера, установленных с помощью INSTALL PLUGIN. Во время нормальной последовательности запуска сервер загружает плагины, зарегистрированные в этой таблице. Если сервер запускается с опцией --skip-grant-tables, зарегистрированные в таблице плагины не загружаются и недоступны. См. раздел 7.6.1, «Установка и удаление плагинов».

Таблицы системы журналов

Сервер использует эти системные таблицы для ведения журналов:

  • general_log: Таблица общего журнала запросов.

  • slow_log: Таблица журнала медленных запросов.

Таблицы журналов используют хранилище CSV.

Дополнительную информацию см. в разделе 7.4, «Журналы сервера MySQL».

Таблицы системы справки для сервера

Эти системные таблицы содержат информацию о справке для сервера:

  • help_category: Информация о категориях справки.

  • help_keyword: Ключевые слова, связанные с темами справки.

  • help_relation: Сопоставления между ключевыми словами справки и темами.

  • help_topic: Содержание тем справки.

Дополнительную информацию см. в разделе 7.1.17, «Поддержка справки на стороне сервера».

Таблицы системы часовых поясов

Эти системные таблицы содержат информацию о часовых поясах:

  • time_zone: Идентификаторы часовых поясов и использование ими секунд високосных лет.

  • time_zone_leap_second: Время возникновения секунд високосных лет.

  • time_zone_name: Сопоставления между идентификаторами и названиями часовых поясов.

  • time_zone_transition, time_zone_transition_type: Описания часовых поясов.

Дополнительную информацию см. в разделе 7.1.15, «Поддержка часовых поясов MySQL Server».

Таблицы системы репликации

Сервер использует эти системные таблицы для поддержки репликации:

  • gtid_executed: Таблица для хранения значений GTID. См. таблицу mysql.gtid_executed.

  • ndb_binlog_index: Информация о двоичном журнале для репликации NDB Cluster. Эта таблица создается только в том случае, если сервер построен с поддержкой NDBCLUSTER. См. раздел 25.7.4, «Схема и таблицы репликации NDB Cluster».

  • slave_master_info, slave_relay_log_info, slave_worker_info: Используются для хранения информации о репликации на серверах-репликах. См. раздел 19.2.4, «Репозитории релейных журналов и метаданных репликации».

Все перечисленные таблицы используют хранилище InnoDB.

Таблицы системы оптимизатора

Эти системные таблицы используются оптимизатором:

  • innodb_index_stats, innodb_table_stats: Используются для InnoDB постоянных статистических данных оптимизатора. См. раздел 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».

  • server_cost, engine_cost: Модель стоимости оптимизатора использует таблицы, содержащие информацию об оценке стоимости операций, выполняемых во время выполнения запроса. server_cost содержит оценки стоимости оптимизатора для общих операций сервера. engine_cost содержит оценки для операций, специфичных для определенных хранилищ. См. раздел 10.9.5, «Модель стоимости оптимизатора».

Дополнительные системные таблицы

Другие системные таблицы не подходят под предыдущие категории:

  • audit_log_filter, audit_log_user: Если установлен MySQL Enterprise Audit, эти таблицы обеспечивают постоянное хранение определений фильтров журнала аудита и учетных записей пользователей. См. Таблицы журнала аудита.

  • firewall_group_allowlist, firewall_groups, firewall_memebership, firewall_users, firewall_whitelist: Если установлен MySQL Enterprise Firewall, эти таблицы обеспечивают постоянное хранение информации, используемой брандмауэром. См. Раздел 8.4.7, «MySQL Enterprise Firewall».

  • servers: Используется движком хранения FEDERATED. См. Раздел 18.8.2.2, «Создание таблицы FEDERATED с помощью CREATE SERVER».

  • innodb_dynamic_metadata: Используется движком хранения InnoDB для хранения быстро изменяемых метаданных таблицы, таких как значения счетчиков автоинкремента и флаги повреждения индексного дерева. Заменяет таблицу буфера словаря данных, которая находилась в системном табличном пространстве InnoDB.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/system-schema.html

Spec-Zone.ru

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