Spec-Zone .ru
спецификации, руководства, описания, API

13.7.5.29. SHOW PROFILE Синтаксис

SHOW PROFILE [type [, type] ... ]    [FOR QUERY n]    [LIMIT row_count [OFFSET offset]]type:    ALL  | BLOCK IO  | CONTEXT SWITCHES  | CPU  | IPC  | MEMORY  | PAGE FAULTS  | SOURCE  | SWAPS

SHOW PROFILE и SHOW PROFILES операторы выводят на экран информацию о профилировании, которая указывает на использование ресурсов для операторов, выполняемых в течение текущего сеанса.

Отметить

Эти операторы осуждаются и будут удалены в будущем выпуске MySQL. Используйте Схему Производительности вместо этого; см. Главу 20, MySQL Performance Schema.

Профилированием управляют profiling переменная сеанса, у которой есть значение по умолчанию 0 (OFF). Профилирование включается, устанавливая profiling к 1 или ON:

mysql> SET profiling = 1;

SHOW PROFILES выводит на экран список новых операторов, отправленных серверу. Размером списка управляют profiling_history_size переменная сеанса, у которой есть значение по умолчанию 15. Максимальное значение 100. Установка значения к 0 имеет практический эффект отключения профилирования.

Все операторы профилируются кроме SHOW PROFILE и SHOW PROFILES, таким образом, Вы не найдете ни один из тех операторов в списке профиля. Профилируются уродливые операторы. Например, SHOW PROFILING недопустимый оператор, и синтаксическая ошибка происходит, если Вы пытаетесь выполнить ее, но она обнаружится в списке профилирования.

SHOW PROFILE подробная информация дисплеев о единственном операторе. Без FOR QUERY n пункт, вывод принадлежит последний раз выполняемому оператору. Если FOR QUERY n включается, SHOW PROFILE информация о дисплеях для оператора n. Значения n соответствуйте Query_ID значения, выведенные на экран SHOW PROFILES.

LIMIT row_count пункт может быть дан, чтобы ограничить вывод row_count строки. Если LIMIT дается, OFFSET offset может быть добавлен, чтобы начать вывод offset строки в полный комплект строк.

По умолчанию, SHOW PROFILE дисплеи Status и Duration столбцы. Status значения походят State значения, выведенные на экран SHOW PROCESSLIST, хотя могли бы быть некоторые незначительные различия в interpretion для этих двух операторов для некоторых значений состояния (см. Раздел 8.12.5, "Исследуя информацию о Потоке").

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

Профилирование включается на сеанс. Когда сеанс заканчивается, его информация о профилировании теряется.

mysql> SELECT @@profiling;+-------------+| @@profiling |+-------------+|           0 |+-------------+1 row in set (0.00 sec)mysql> SET profiling =
        1;Query OK, 0 rows affected (0.00 sec)mysql> DROP TABLE IF
        EXISTS t1;Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> CREATE TABLE T1 (id INT);Query OK, 0 rows affected (0.01 sec)mysql> SHOW PROFILES;+----------+----------+--------------------------+| Query_ID | Duration | Query                    |+----------+----------+--------------------------+|        0 | 0.000088 | SET PROFILING = 1        ||        1 | 0.000136 | DROP TABLE IF EXISTS t1  ||        2 | 0.011947 | CREATE TABLE t1 (id INT) |+----------+----------+--------------------------+3 rows in set (0.00 sec)mysql> SHOW PROFILE;+----------------------+----------+| Status               | Duration |+----------------------+----------+| checking permissions | 0.000040 || creating table       | 0.000056 || After create         | 0.011363 || query end            | 0.000375 || freeing items        | 0.000089 || logging slow query   | 0.000019 || cleaning up          | 0.000005 |+----------------------+----------+7 rows in set (0.00 sec)mysql> SHOW PROFILE FOR QUERY 1;+--------------------+----------+| Status             | Duration |+--------------------+----------+| query end          | 0.000107 || freeing items      | 0.000008 || logging slow query | 0.000015 || cleaning up        | 0.000006 |+--------------------+----------+4 rows in set (0.00 sec)mysql> SHOW PROFILE CPU FOR QUERY 2;+----------------------+----------+----------+------------+| Status               | Duration | CPU_user | CPU_system |+----------------------+----------+----------+------------+| checking permissions | 0.000040 | 0.000038 |   0.000002 || creating table       | 0.000056 | 0.000028 |   0.000028 || After create         | 0.011363 | 0.000217 |   0.001571 || query end            | 0.000375 | 0.000013 |   0.000028 || freeing items        | 0.000089 | 0.000010 |   0.000014 || logging slow query   | 0.000019 | 0.000009 |   0.000010 || cleaning up          | 0.000005 | 0.000003 |   0.000002 |+----------------------+----------+----------+------------+7 rows in set (0.00 sec)
Отметить

Профилирование только частично функционально на небольшом количестве архитектуры. Для значений, которые зависят от getrusage() системный вызов, NULL возвращается на системах, таких как Windows, которые не поддерживают вызов. Кроме того, профилирование для каждого процесса а не на поток. Это означает, что действие на потоках в пределах сервера кроме Вашего собственного может влиять на информацию о синхронизации, которую Вы видите.

Можно также получить информацию профилирования от PROFILING таблица в INFORMATION_SCHEMA. См. Раздел 19.17," INFORMATION_SCHEMA PROFILING Таблица". Например, следующие запросы приводят к тому же самому результату:

SHOW PROFILE FOR QUERY 2;SELECT STATE, FORMAT(DURATION, 6) AS DURATIONFROM INFORMATION_SCHEMA.PROFILINGWHERE QUERY_ID = 2 ORDER BY SEQ;