Сайт создан на конструкторе for.ru.   Создайте и Вы себе сайт бесплатно!
АРМ БЕЗ АБОНЕНТСКОЙ ПЛАТЫ  

Mysql - статистика медленных sql запросов

06. 12. 2019

Анализ, лог запросов  Mysql, оптимизация, статистика sql запросов базы данных Mysql Slow Query Log Optimize,   Mysql 8,  5.7, 5.6, 5.5

Для анализа производительности базы данных необходимо включить в файле my.cnf ведение лога медленных запросов mysql.

Запросы к базе данных, выполняемые дольше long_query_time будут записываться в лог файл.

После тестирования сайта можно проанализировать лог файл медленных запросов и выявить наиболее часто повторяющиеся запросы.

Лог медленных запросов  (Mysql Slow Query Log)

Лог медленных запросов - надежный способ фиксации медленных запросов, который позволяет администратору определить какие запросы в первую очередь нуждаются в оптимизации. Начиная с MySQL 5.6 появилась возможность использовать для этой цели Performance Schema, которая имеет более низкие накладные расходы. Однако, лог медленных запросов имеет одно важное преимущество - данные не исчезают (т.к. записываются на диск в отличии от таблиц Performance Schema, которые хранятся в памяти и не используют постоянное дисковое хранилище). В недавно вышедшей MySQL 8.0.14 лог медленных запросов стал более удобным инструментом за счет добавления дополнительных параметров выполнения запроса.

 

По умолчанию дополнительная информация не записывается в лог, чтобы включить эту опцию используйте переменную log_slow_extra:

mysql> SET PERSIST log_slow_extra = ON;
Query OK, 0 rows affected (0.05 sec)

SET PERSIST используется для того, чтобы изменения конфигурации сохранились при перезагрузке сервера MySQL. Если вы хотите сначала попробовать новую возможность (а потом уже решать оставить ли её включенной по умолчанию), используйте SET GLOBAL.

Это всё что требуется для настройки. Теперь можно выполнить "медленный" запрос и посмотреть данные, записанные в лог. Простейший способ получить медленный запрос - выполнить DO SLEEP(...), где вместо троеточия указать количество секунд, на которое будет произведена задержка. Однако, это не очень интересный для анализа запрос. Другой путь - уменьшить long_query_time настолько, чтобы запрос попал в лог. Если установить значение long_query_time равным нулю, в лог будут записываться все запросы:

mysql> SET SESSION long_query_time = 0.0;
Query OK, 0 rows affected (0.01 sec)
Обратите внимание: Включение лога медленных запросов несет дополнительные накладные расходы. Не рекомендуется использовать его непрерывно с long_query_time = 0 для всех подключений. Это может привести к проблемам с производительностью.

Поэтому в примере выше указан SET SESSION, чтобы изменение long_query_time повлияло только на текущую сессию.

Давайте выполним следующий запрос:

mysql> SELECT * FROM world.city ORDER BY Population DESC LIMIT 10;
 

Это приведет к появлению в логе медленных запросов записи вида:

SET timestamp=1548919460;
SELECT * FROM world.city ORDER BY Population DESC LIMIT 10;

Для сравнения, запись о том же самом запросе при log_slow_extra = OFF будет иметь вид:

SET timestamp=1548919446;
SELECT * FROM world.city ORDER BY Population DESC LIMIT 10;

Дополнительная статистика записывается только в файл журнала медленных запросов (т.е. log_output равен или содержит значение FILE). При записи лога в системную таблицу эффекта от включения log_slow_extra не будет.

В MySQL 5.7 был изменен формат отображения временных меток в лог файлах. Теперь в качестве разделителя между датой и временем используется символ "Т", а "Z" в конце указывает на использование временной зоны по умолчанию - UTC. Подробнее можно прочитать в другой статье автора - The Format for Timestamps in MySQL Logs

До MySQL 8.0.14 в строке SET timestamp указывалось время, когда запрос был записан в лог, что происходило после того, как запрос завершал работу. Теперь отображается время, когда запрос начал выполняться.


 

  1. Главная
  2.  › 
  3. Базы данных
  4.  › 
  5. Mysql - статистика медленных sql запросов

 

 

 

Объявление на For.ru:
for.ru/create/shop/
Создайте свой Интернет - магазин

for.ru/create/shop/
И размещайте здесь свою рекламу бесплатно.

Музыка
Реклама:
Создайте себе сайт бесплатно!
Создайте себе сайт бесплатно!
Реклама от FOR.ru:
Создайте себе сайт с помощью конструктора

for.ru/create/site/
И размещайте тут свою рекламу бесплатно.

for.ru/create/site/
 
Пожаловаться на сайт