Spec-Zone .ru
спецификации, руководства, описания, API
|
SHOW PROFILE [type
[,type
] ... ] [FOR QUERYn
] [LIMITrow_count
[OFFSEToffset
]]type
: ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS
SHOW
PROFILE
и SHOW PROFILES
операторы выводят на экран информацию о профилировании, которая указывает на использование ресурсов для
операторов, выполняемых в течение текущего сеанса.
Эти операторы осуждаются с MySQL 5.6.7 и будут удалены в будущем выпуске MySQL. Используйте Схему Производительности вместо этого; см. Главу 21, 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
значения могут быть определены, чтобы вывести на
экран определенные дополнительные типы информации:
ALL
дисплеи вся информация
BLOCK IO
дисплеи значат блочные операции ввода и вывода
CONTEXT SWITCHES
дисплеи значат добровольные и
ненамеренные контекстные переключения
CPU
пользователь дисплеев и системные времена
использования ЦП
IPC
дисплеи значат сообщения, отправленные и полученные
MEMORY
в настоящий момент не реализуется
PAGE FAULTS
дисплеи значат главные и незначительные
отсутствия страницы
SOURCE
выводит на экран имена функций от исходного
кода, вместе с именем и номером строки файла, в котором происходит функция
SWAPS
дисплеи подкачивают количества
Профилирование включается на сеанс. Когда сеанс заканчивается, его информация о профилировании теряется.
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
. См. Раздел 20.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;