Spec-Zone.ru › MySQL 9.2

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.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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/show-profile.html

Spec-Zone.ru

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