Молодогвардейцев 454015 Россия, Челябинская область, город Челябинск 89085842764
MindHalls logo

Измерить время исполнения запроса в MySQL с помощью PROFILES

Еще раз вернемся к теме измерения скорости исполнения чего-либо. Ранее я уже рассказал о том, как измерить скорость исполнения участка кода на C/C++, а сейчас перейду немножко в другую степь, а именно к базам данных. Расскажу и покажу, как легко измерить время исполнения запроса к базе не выходя из консоли MySQL и не написав ни одной строчки кода.

Такую чудесную возможность нам дает инструмент профилирования в MySQL. В этой заметке я не буду углубляться в тонкости его использования, просто пробегусь по верхам и покажу как вытащить основную информацию о запросах к базе данных. Поехали!

Включаем профилирование в MySQL

Первым делом нужно включить инструмент профилирования. Все команды выполняются напрямую из консоли mysql, напомню, как в нее войти.

mysql -u root -p

После этого включаем профилирование.

set profiling=1

С текущего момента информация о запросах будет логироваться, давайте ее получим.

Измерить время исполнения запроса

Профилирование включено и собирает информацию, пришло время написать запрос, пусть он будет такой.

select * from table1;

Для того, чтобы посмотреть информацию по всем запросам, нужно прописать команду

show profiles;

И мы получим в ответ вот такую таблицу, в которой располагаются идентификатор нашего запроса, время его исполнения и сам запрос.

show profiling

Для того, чтобы посмотреть детальную информацию о конкретном запросе, можно вызвать ее по ID следующим образом

show profile for query 1;

И получить вот такую таблицу

show profile for query

Другая информация о запросах

Кроме скорости исполнения запроса, можно вывести дополнительные сведения, например, размеры используемых свопов(swap). Добавляем нужный параметр в команду

show profile swaps for query 1;

В таблице с выводом появится дополнительный столбец.

show profile swaps for query

Доступные параметры:

— ALL — все информация сразу
— BLOCK IO — количество блочных I/O операций на запрос
— CONTEXT SWITCHES — количество переключений контекстов
— CPU — процессорное время
— IPC — количество полученных и отправленных сообщений
— PAGE FAULTS — количество page faults
— SOURCE — имена функций исходного кода, которые были выполнены
— SWAPS — размеры используемых свопов