О web-разработке
и даже немного больше...

Как узнать время выполнения MySQL запроса?

Одним из главных факторов эффективности выполнения MySQL запросов является время его выполнения. Отладка запросов MySQL является делом не из редких, и хорошо бы иметь под рукой удобный инструмент, который бы позволил оценить время выполнения запроса.
В MySQL начиная с версии 5.0.37 есть появился встроенный механизм — profiling, который позволяет оценить время выполнения того или иного запроса.

Рассмотрим пример его использования:

mysql> set profiling=1;
mysql> select count(*) from comment;
mysql> select count(*) from message;
mysql> show profiles;

В качестве результата получаем данные в таком виде:

+----------+------------+------------------------------+
| Query_ID | Duration   | Query                        |
+----------+------------+------------------------------+
|        1 | 0.00012700 | select count(*) from comment |
|        2 | 0.00014200 | select count(*) from message |
+----------+------------+------------------------------+
2 rows in set (0.00 sec)

Команда show profiles по умолчанию показывает результаты 15 запросов, цифру можно увеличить, задав параметр profiling_history_size:

mysql> set profiling=1;
mysql> set profiling_history_size=100;

Этот метод так же хорош тем, что если мерить время выполнения запроса из самого кода приложения, то такие факторы, как коннект к серверу MySQL тоже может отнимать какое-то время, что в итоге может привести к неточным цифрам. В случае же с профилированием, вы просматриваете время выполнения самого запроса. Кроме этого можно просмотреть детальную информацию, на что тратилось время выполнения запроса:

mysql> show profile for query 1;
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000015 |
| checking query cache for query | 0.000021 |
| checking permissions           | 0.000003 |
| Opening tables                 | 0.000007 |
| System lock                    | 0.000004 |
| Table lock                     | 0.000023 |
| init                           | 0.000005 |
| optimizing                     | 0.000005 |
| executing                      | 0.000025 |
| end                            | 0.000003 |
| end                            | 0.000001 |
| query end                      | 0.000002 |
| storing result in query cache  | 0.000003 |
| freeing items                  | 0.000003 |
| closing tables                 | 0.000004 |
| logging slow query             | 0.000002 |
| cleaning up                    | 0.000001 |
+--------------------------------+----------+
17 rows in set (0.00 sec)

Довольно удобный инструмент, который можно использовать для оптимизации MySQL запросов.
Узнайте больше о возможностях использования в официальной документации — SHOW PROFILE Syntax.

Опубликован: 20.07.2015 г.

См. также:

Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Как изменить тип таблиц в MySQL?
Изменение кодировки таблиц в базе MySQL
Фильтрация по полю DateTime в MySQL
Меняем пароль root в MySQL 5.7
Исправление ошибок в базе MySQL
Восстановление пароля root в MySQL

Комментарии

  1. Sasha пишет:

    Спасибо, не знал про show profile. Полезно!

Добавить комментарий для Sasha Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта