MySQL Performance Schema: мониторинг узких мест сервера

MySQL / MariaDB · 19.04.2026
MySQL Performance Schema: мониторинг узких мест сервера

MySQL Performance Schema

Performance Schema — встроенный инструмент диагностики MySQL, работающий на уровне движка. В отличие от SHOW STATUS, он позволяет отслеживать конкретные запросы, потоки, блокировки и потребление ресурсов в реальном времени.

Включение Performance Schema

# Проверить статус
mysql -e "SELECT * FROM performance_schema.setup_instruments LIMIT 5;"

# В my.cnf (включено по умолчанию в MySQL 5.6+)
[mysqld]
performance_schema=ON

Топ медленных запросов

-- Топ-10 запросов по суммарному времени выполнения
SELECT
  DIGEST_TEXT,
  COUNT_STAR AS exec_count,
  ROUND(SUM_TIMER_WAIT/1e12, 3) AS total_sec,
  ROUND(AVG_TIMER_WAIT/1e12, 6) AS avg_sec,
  SUM_ROWS_EXAMINED AS rows_examined
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

Анализ блокировок

-- Текущие блокировки InnoDB
SELECT
  r.trx_id waiting_trx_id,
  r.trx_mysql_thread_id waiting_thread,
  r.trx_query waiting_query,
  b.trx_id blocking_trx_id,
  b.trx_mysql_thread_id blocking_thread,
  b.trx_query blocking_query
FROM information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;

Мониторинг памяти

-- Потребление памяти по компонентам
SELECT
  EVENT_NAME,
  CURRENT_NUMBER_OF_BYTES_USED / 1024 / 1024 AS current_mb,
  HIGH_NUMBER_OF_BYTES_USED / 1024 / 1024 AS peak_mb
FROM performance_schema.memory_summary_global_by_event_name
WHERE CURRENT_NUMBER_OF_BYTES_USED > 0
ORDER BY CURRENT_NUMBER_OF_BYTES_USED DESC
LIMIT 10;

Статистика I/O по таблицам

-- Таблицы с наибольшей нагрузкой на чтение/запись
SELECT
  OBJECT_SCHEMA,
  OBJECT_NAME,
  COUNT_READ,
  COUNT_WRITE,
  COUNT_FETCH,
  SUM_TIMER_WAIT / 1e12 AS total_wait_sec
FROM performance_schema.table_io_waits_summary_by_table
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

Sys Schema — удобная обёртка

-- sys schema предоставляет читаемые представления
-- Топ запросы по задержке
SELECT * FROM sys.statements_with_runtimes_in_95th_percentile LIMIT 10;

-- Таблицы без индексов
SELECT * FROM sys.schema_tables_with_full_table_scans;

-- Неиспользуемые индексы
SELECT * FROM sys.schema_unused_indexes;
Совет: Sys Schema доступна по умолчанию в MySQL 5.7+ и MariaDB 10.6+. Она делает данные Performance Schema читаемыми для людей без написания сложных JOIN-запросов.
← Назад в базу знаний Задать вопрос поддержке