Как я могу измерить время выполнения запроса, не измеряя время, которое он проводит в ожидании снятия блокировки и т. Д.? Моя единственная идея заключалась в том, чтобы постоянно измерять один и тот же запрос и фиксировать самое быстрое время.
Ответы:
Запустите профилировщик с
SET profiling = 1;
Затем выполните свой запрос.
С участием
SHOW PROFILES;
вы увидите список запросов, по которым профилировщик имеет статистику. И, наконец, вы выбираете, с каким запросом исследовать
SHOW PROFILE FOR QUERY 1;
или любой другой номер вашего запроса.
Вы получите список, в котором точно указано, сколько времени было потрачено на выполнение запроса.
Больше информации в инструкции.
sending data
. Или все, что нужно для повышения производительности. Я не вижу смысла сообщать пользователям, почему им приходится так долго ждать. На самом деле им все равно.
Принятый ответ становится недействительным ...
SHOW PROFILE[S]
являются устаревшим MySQL 5.6.7 и будут удалены в выпуске будущего MySQL. Вместо этого используйте схему производительности; см. http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profiling.html
show profiles
работаю правильно