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 Schemauser_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.