Spec-Zone.ru › MySQL 5.7

13.7.5.30 Заявление 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 вместо этого; см. Раздел 25.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, хотя могут быть незначительные различия в интерпретации для некоторых значений состояния (см. Раздел 8.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(), на системах, таких как Windows, которые не поддерживают этот вызов, возвращается NULL. Кроме того, профилирование выполняется по процессам, а не по потокам. Это означает, что деятельность в потоках сервера, отличных от вашего, может повлиять на информацию о времени, которую вы видите.

Информация о профилировании также доступна из таблицы INFORMATION_SCHEMA PROFILING. См. Раздел 24.3.19, «Таблица 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-5.7-en/show-profile.html

Spec-Zone.ru

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