Spec-Zone.ru › MySQL 8.4

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 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, хотя могут быть небольшие различия в интерпретации для некоторых значений состояния (см. Раздел 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/show-profile.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API