25.20 Миграция к таблицам системных и статусных переменных Performance Schema
В INFORMATION_SCHEMA имеются таблицы, содержащие информацию о системных и статусных переменных (см. Раздел 24.3.11, «Таблицы INFORMATION_SCHEMA GLOBAL_VARIABLES и SESSION_VARIABLES» и Раздел 24.3.10, «Таблицы INFORMATION_SCHEMA GLOBAL_STATUS и SESSION_STATUS»). Performance Schema также содержит таблицы системных и статусных переменных (см. Раздел 25.12.13, «Таблицы системных переменных Performance Schema» и Раздел 25.12.14, «Таблицы статусных переменных Performance Schema»). Таблицы Performance Schema предназначены для замены таблиц INFORMATION_SCHEMA, которые устарели начиная с MySQL 5.7.6 и удалены в MySQL 8.0.
В этом разделе описан предполагаемый путь миграции от таблиц системных и статусных переменных INFORMATION_SCHEMA к соответствующим таблицам Performance Schema. Разработчики приложений должны использовать эту информацию как руководство по изменениям, необходимым для доступа к системным и статусным переменным в MySQL 5.7.6 и выше, поскольку таблицы INFORMATION_SCHEMA устаревают и в конечном итоге удаляются.
MySQL 5.6
В MySQL 5.6 информация о системных и статусных переменных доступна с помощью этих SHOW запросов:
SHOW VARIABLES
SHOW STATUS
И из этих INFORMATION_SCHEMA таблиц:
INFORMATION_SCHEMA.GLOBAL_VARIABLES
INFORMATION_SCHEMA.SESSION_VARIABLES
INFORMATION_SCHEMA.GLOBAL_STATUS
INFORMATION_SCHEMA.SESSION_STATUS
MySQL 5.7
Начиная с MySQL 5.7.6, Performance Schema включает эти таблицы в качестве новых источников информации о системных и статусных переменных:
performance_schema.global_variables
performance_schema.session_variables
performance_schema.variables_by_thread
performance_schema.global_status
performance_schema.session_status
performance_schema.status_by_thread
performance_schema.status_by_account
performance_schema.status_by_host
performance_schema.status_by_user
MySQL 5.7.6 также добавляет системную переменную show_compatibility_56 для управления тем, как сервер предоставляет информацию о системных и статусных переменных.
Когда show_compatibility_56 имеет значение ON, включена совместимость с MySQL 5.6. Более ранние источники системных и статусных переменных (SHOW запросы, INFORMATION_SCHEMA таблицы) доступны с такими же семантическими значениями, как в MySQL 5.6. Приложения должны работать так же, без изменений кода, и должны видеть те же имена и значения переменных, что и в MySQL 5.6. В этих случаях выводятся предупреждения:
При выборке из таблиц
INFORMATION_SCHEMAвыдается предупреждение об устаревании.В MySQL 5.7.6 и 5.7.7, при использовании фрагмента
WHEREсSHOWзапросами выдается предупреждение об устаревании. Такое поведение отсутствует начиная с MySQL 5.7.8.
Когда show_compatibility_56 имеет значение OFF, совместимость с MySQL 5.6 отключена, что приводит к ряду изменений. Приложения необходимо пересмотреть для корректной работы следующим образом:
-
Выбор из таблиц
INFORMATION_SCHEMAприводит к ошибке. Приложения, которые обращаются к таблицамINFORMATION_SCHEMA, должны быть пересмотрены для использования соответствующих таблиц Performance Schema.До MySQL 5.7.9 выбор из таблиц
INFORMATION_SCHEMAприводил к пустому набору результатов и предупреждению об устаревании. Это не достаточно информативно, чтобы сигнализировать о необходимости миграции к соответствующим таблицам Performance Schema системных и статусных переменных в случае, еслиshow_compatibility_56=OFF. Вывод ошибки в MySQL 5.7.9 и выше делает более очевидным, что приложение работает в условиях, требующих изменения, а также указывает, в чем заключается проблема.В MySQL 5.7.6 и 5.7.7 таблицы Performance Schema
session_variablesиsession_statusне полностью отражают все переменные, действующие для текущей сессии; они не содержат строк для глобальных переменных, у которых нет аналогов в сессии. Это исправлено в MySQL 5.7.8. -
Вывод для
SHOWзапросов производится с использованием базовых таблиц Performance Schema. Приложения, написанные для использования этих запросов, по-прежнему могут использовать их, но лучше использовать MySQL 5.7.8 или более позднюю версию. В MySQL 5.7.6 и 5.7.7 результаты могут отличаться:Вывод
SHOW [SESSION] VARIABLESне включает глобальные переменные, у которых нет аналогов в сессии.Использование фрагмента
WHEREсSHOWзапросами приводит к ошибке.
-
Эти
Slave_статусные переменные становятся недоступными черезxxxSHOW STATUS:Slave_heartbeat_period Slave_last_heartbeat Slave_received_heartbeats Slave_retried_transactions Slave_running
Приложения, использующие эти статусные переменные, должны быть пересмотрены для получения этой информации с использованием реплицируемых таблиц Performance Schema. Подробности см. в Эффекте show_compatibility_56 на статусные переменные Slave.
Performance Schema не собирает статистику по
Com_статусных переменных в таблицах статусных переменных. Для получения глобальных и по-сессионных счетчиков выполнения операторов используйте таблицыxxxevents_statements_summary_global_by_event_nameиevents_statements_summary_by_thread_by_event_name, соответственно.
Миграция и привилегии
Изначально, с введением таблиц системных и статусных переменных Performance Schema в MySQL 5.7.6, доступ к этим таблицам требовал привилегии SELECT, как и для других таблиц Performance Schema. Однако это имело следствие, что при отключении show_compatibility_56=OFF, запросы SHOW VARIABLES и SHOW STATUS также требовали привилегии SELECT: при отключении совместимости вывод этих запросов брался из таблиц Performance Schema global_variables, session_variables, global_status и session_status.
Начиная с MySQL 5.7.9, эти таблицы Performance Schema имеют открытый для всех чтения доступ без привилегии SELECT. Вследствие этого, запросы SHOW VARIABLES и SHOW STATUS не требуют привилегий на базовые таблицы Performance Schema, из которых получается вывод, когда show_compatibility_56=OFF.
Повышение версии MySQL до 8.0
В MySQL 8.0 таблицы переменных INFORMATION_SCHEMA и системная переменная show_compatibility_56 удалены, а вывод от SHOW запросов всегда основан на таблицах Performance Schema.
Приложения, которые были переработаны для работы в MySQL 5.7 при show_compatibility_56=OFF, должны работать без дополнительных изменений, за исключением невозможности проверки или установки show_compatibility_56, поскольку она отсутствует.
© 2025 Oracle
Licensed under the GPLv2 License.