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.20.6, «Ограничения CHECK». -
collations: Информация о кодировках для каждого набора символов. column_statistics: Статистические гистограммы значений столбцов. См. Раздел 10.9.6, «Статистика оптимизатора».-
column_type_elements: Информация о типах, используемых столбцами. -
columns: Информация о столбцах в таблицах. -
dd_properties: Таблица, которая идентифицирует свойства словаря данных, такие как его версия. Сервер использует это, чтобы определить, нужно ли обновлять словарь данных до более новой версии. -
events: Информация о событиях планировщика событий. См. Раздел 27.4, «Использование планировщика событий». Если сервер запущен с опцией--skip-grant-tables, планировщик событий отключен, и зарегистрированные в таблице события не выполняются. См. Раздел 27.4.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
...
Нет таблицы Информационной схемы, которая точно соответствует 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 8.4 являются 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, таблица схемы производительностиuser_defined_functionsперечисляет загружаемые функции, установленные с помощьюCREATE FUNCTION. В отличие от таблицыmysql.func, таблицаuser_defined_functionsтакже перечисляет функции, установленные автоматически компонентами или плагинами сервера. Это различие делаетuser_defined_functionsпредпочтительнееmysql.funcдля проверки установленных функций. См. раздел 29.12.22.10, «Таблица 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».
Таблицы системы репликации
Сервер использует эти системные таблицы для поддержки репликации:
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.