15.7.7.32 Заявление 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 отображают информацию о профилировании, которая показывает использование ресурсов для заявлений, выполненных в ходе текущей сессии.
Заявления SHOW PROFILE и SHOW PROFILES устарели; ожидается, что они будут удалены в будущих выпусках MySQL. Используйте Performance Schema вместо них; см. Раздел 29.19.1, «Профилирование запросов с помощью 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 вывод относится к последнему выполненному заявлению. Если nFOR QUERY включена, nSHOW PROFILE отображает информацию для заявления n. Значения n соответствуют значениям Query_ID, отображаемым SHOW PROFILES.
Фраза LIMIT
может быть указана для ограничения вывода до row_countrow_count строк. Если LIMIT указано, OFFSET
может быть добавлено для начала вывода с offsetoffset строк в полном наборе строк.
По умолчанию SHOW PROFILE отображает столбцы Status и Duration. Значения Status аналогичны значениям State, отображаемым SHOW PROCESSLIST, хотя могут быть небольшие различия в интерпретации для некоторых значений состояния (см. Раздел 10.14, «Просмотр информации о потоках сервера (процессах)»).
Дополнительные значения 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, которые не поддерживают вызов. Кроме того, профилирование выполняется на уровне процесса, а не потока. Это означает, что деятельность в потоках сервера, отличных от вашего, может повлиять на временную информацию, которую вы видите.
Информация о профилировании также доступна из таблицы INFORMATION_SCHEMA PROFILING. См. Раздел 28.3.24, «Таблица INFORMATION_SCHEMA PROFILING». Например, следующие запросы эквивалентны:
SHOW PROFILE FOR QUERY 2;
SELECT STATE, FORMAT(DURATION, 6) AS DURATION
FROM INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID = 2 ORDER BY SEQ;
© 2025 Oracle
Licensed under the GPLv2 License.