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.25, «Таблица 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.