Еще раз вернемся к теме измерения скорости исполнения чего-либо. Ранее я уже рассказал о том, как измерить скорость исполнения участка кода на C/C++, а сейчас перейду немножко в другую степь, а именно к базам данных. Расскажу и покажу, как легко измерить время исполнения запроса к базе не выходя из консоли MySQL и не написав ни одной строчки кода.
Такую чудесную возможность нам дает инструмент профилирования в MySQL. В этой заметке я не буду углубляться в тонкости его использования, просто пробегусь по верхам и покажу как вытащить основную информацию о запросах к базе данных. Поехали!
Включаем профилирование в MySQL
Первым делом нужно включить инструмент профилирования. Все команды выполняются напрямую из консоли mysql, напомню, как в нее войти.
mysql -u root -p
После этого включаем профилирование.
set profiling=1
С текущего момента информация о запросах будет логироваться, давайте ее получим.
Измерить время исполнения запроса
Профилирование включено и собирает информацию, пришло время написать запрос, пусть он будет такой.
select * from table1;
Для того, чтобы посмотреть информацию по всем запросам, нужно прописать команду
show profiles;
И мы получим в ответ вот такую таблицу, в которой располагаются идентификатор нашего запроса, время его исполнения и сам запрос.
Для того, чтобы посмотреть детальную информацию о конкретном запросе, можно вызвать ее по ID следующим образом
show profile for query 1;
И получить вот такую таблицу
Другая информация о запросах
Кроме скорости исполнения запроса, можно вывести дополнительные сведения, например, размеры используемых свопов(swap). Добавляем нужный параметр в команду
show profile swaps for query 1;
В таблице с выводом появится дополнительный столбец.
Доступные параметры:
— ALL — все информация сразу
— BLOCK IO — количество блочных I/O операций на запрос
— CONTEXT SWITCHES — количество переключений контекстов
— CPU — процессорное время
— IPC — количество полученных и отправленных сообщений
— PAGE FAULTS — количество page faults
— SOURCE — имена функций исходного кода, которые были выполнены
— SWAPS — размеры используемых свопов