Spec-Zone.ru › MySQL 5.7

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_xxx статусные переменные становятся недоступными через SHOW STATUS:

    Slave_heartbeat_period
    Slave_last_heartbeat
    Slave_received_heartbeats
    Slave_retried_transactions
    Slave_running
    

    Приложения, использующие эти статусные переменные, должны быть пересмотрены для получения этой информации с использованием реплицируемых таблиц Performance Schema. Подробности см. в Эффекте show_compatibility_56 на статусные переменные Slave.

  • Performance Schema не собирает статистику по Com_xxx статусных переменных в таблицах статусных переменных. Для получения глобальных и по-сессионных счетчиков выполнения операторов используйте таблицы events_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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/performance-schema-variable-table-migration.html

Spec-Zone.ru

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