Начиная с версии 5.0.37 в MySQL Community Server появился удобный инструмент для профилирования запросов - директивы "SHOW PROFILES" и "SHOW PROFILE".Директива "SHOW PROFILES" показывает список запросов, выполненных в рамках текущей сессии и время выполнения каждого запроса. Число отображаемых запросов определяется переменной сессии profiling_history_size, которая имеет значение по умолчанию 15, максимальное 100. В список попадают все запросы кроме "SHOW PROFILES" и "SHOW PROFILE", включая синтаксически неверные. Профилирование действует в течении сессии. По завершении сессии информация профайлинга теряется.
Включаем профилирование:
mysql> set profiling=1;
Query OK, 0 rows affected (0.00 sec)
Через некоторое время смотрим результат:
mysql> show profiles;
| Query_ID | Duration | Query
| 2 | 0.00010300 | create table a1 (id int not null auto_increment)
...
Директива "SHOW PROFILE" показывает подробную информацию об этапах выполнения отдельного запроса. По умолчанию, выводится информация о последнем запросе. Для указания на конкретный запрос используется опция FOR QUERY n, где значение n соответствует значению Query_ID из списка, формируемого директивой "SHOW PROFILES".
mysql> show profile for QUERY 2;
| Status | Duration |
| (initialization) | 0.000039 |
| checking permissions | 0.00004 |
| creating table | 0.004034 |
| After create | 0.000294 |
| query end | 0.000009 |
| freeing items | 0.000012 |
| logging slow query | 0.000004 |
где Status - состояние потока, а Duration - время выполнения в секундах.
Информацию, аналогичную результату работы "SHOW PROFILE", можно получить из таблицы PROFILING базы INFORMATION_SCHEMA. Например, следующие команды являются эквивалентными:
SHOW PROFILE FOR QUERY 2;
SELECT STATE, FORMAT(DURATION, 6) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 2;
Ссылки
Подробное описание синтаксиса с указанием всех возможных опций:
http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
Пример использования профайлинга для оптимизации сложных запросов:
http://dev.mysql.com/tech-resources/articles/using-new-query...
URL: http://webew.ru/articles/2732.webew
Обсуждается: http://www.opennet.dev/tips/info/2307.shtml