29.12.6.4 Таблица prepared_statements_instances
Схема производительности предоставляет средства инструментирования для подготовленных запросов, для которых существуют два протокола:
-
Бинарный протокол. К нему осуществляется доступ через MySQL C API, который отображается на соответствующие команды сервера, как показано в следующей таблице.
Функция C API Соответствующая команда сервера COM_STMT_PREPARECOM_STMT_EXECUTECOM_STMT_CLOSE -
Текстовый протокол. К нему осуществляется доступ с помощью SQL-запросов, которые отображаются на соответствующие команды сервера, как показано в следующей таблице.
SQL-запрос Соответствующая команда сервера PREPARESQLCOM_PREPAREEXECUTESQLCOM_EXECUTEDEALLOCATE PREPARE,DROP PREPARESQLCOM_DEALLOCATE PREPARE
Средства инструментирования подготовленных запросов схемы производительности охватывают оба протокола. Далее в обсуждении используются команды сервера, а не функции API C или SQL-запросы.
Информация о подготовленных запросах доступна в таблице prepared_statements_instances. Эта таблица позволяет просматривать подготовленные запросы, используемые на сервере, и предоставляет агрегированные статистические данные о них. Для управления размером этой таблицы установите системную переменную performance_schema_max_prepared_statements_instances при запуске сервера.
Сбор информации о подготовленных запросах зависит от показателей запросов, приведенных в следующей таблице. Эти показатели включены по умолчанию. Для их изменения обновите таблицу setup_instruments.
| Показатель | Команда сервера |
|---|---|
statement/com/Prepare | COM_STMT_PREPARE |
statement/com/Execute | COM_STMT_EXECUTE |
statement/sql/prepare_sql | SQLCOM_PREPARE |
statement/sql/execute_sql | SQLCOM_EXECUTE |
Схема производительности управляет содержимым таблицы prepared_statements_instances следующим образом:
-
Подготовка запроса
Команда
COM_STMT_PREPAREилиSQLCOM_PREPAREсоздает подготовленный запрос на сервере. Если запрос успешно инструментирован, в таблицуprepared_statements_instancesдобавляется новая строка. Если запрос невозможно инструментировать, увеличивается значение системной переменнойPerformance_schema_prepared_statements_lost. -
Выполнение подготовленного запроса
Выполнение команды
COM_STMT_EXECUTEилиSQLCOM_PREPAREдля подготовленного запроса обновляет соответствующую строку таблицыprepared_statements_instances. -
Деаллокация подготовленного запроса
Выполнение команды
COM_STMT_CLOSEилиSQLCOM_DEALLOCATE_PREPAREдля подготовленного запроса удаляет соответствующую строку таблицыprepared_statements_instances. Для предотвращения утечек ресурсов удаление выполняется даже в случае отключения инструментов подготовки запросов, описанных ранее.
Таблица prepared_statements_instances имеет следующие столбцы:
-
OBJECT_INSTANCE_BEGINАдрес подготовленного запроса в памяти.
-
STATEMENT_IDВнутренний идентификатор запроса, назначенный сервером. Текстовый и бинарный протоколы используют идентификаторы запросов.
-
STATEMENT_NAMEДля бинарного протокола этот столбец равен
NULL. Для текстового протокола этот столбец содержит внешнее имя запроса, назначенное пользователем. Например, для следующего SQL-запроса имя подготовленного запроса равноstmt:PREPARE stmt FROM 'SELECT 1';
-
SQL_TEXTТекст подготовленного запроса с маркерами-заменителем
?. -
OWNER_THREAD_ID,OWNER_EVENT_IDЭти столбцы указывают событие, которое создало подготовленный запрос.
-
OWNER_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAMEДля подготовленного запроса, созданного сеансом клиента, эти столбцы равны
NULL. Для подготовленного запроса, созданного хранимой процедурой, эти столбцы указывают на хранимую процедуру. Типичная ошибка пользователя — забыть деаллоцировать подготовленные запросы. Эти столбцы можно использовать для поиска хранимых процедур, которые приводят к утечкам подготовленных запросов:SELECT OWNER_OBJECT_TYPE, OWNER_OBJECT_SCHEMA, OWNER_OBJECT_NAME, STATEMENT_NAME, SQL_TEXT FROM performance_schema.prepared_statements_instances WHERE OWNER_OBJECT_TYPE IS NOT NULL;
Двигатель выполнения запросов. Значение равно либо
PRIMARY, либоSECONDARY. Для использования с HeatWave Service и HeatWave, где двигательPRIMARYравенInnoDB, а двигательSECONDARYравен HeatWave (RAPID). Для MySQL Community Edition Server, MySQL Enterprise Edition Server (на локальном сервере) и HeatWave Service без HeatWave значение всегда равноPRIMARY.-
TIMER_PREPAREВремя, затраченное на саму подготовку запроса.
-
COUNT_REPREPAREКоличество раз, когда запрос был переподготовлен внутри (см. Раздел 10.10.3, «Кэширование подготовленных запросов и хранимых процедур»). Статистические данные о переподготовке недоступны, поскольку они учитываются как часть выполнения запроса, а не как отдельная операция.
-
COUNT_EXECUTE,SUM_TIMER_EXECUTE,MIN_TIMER_EXECUTE,AVG_TIMER_EXECUTE,MAX_TIMER_EXECUTEАгрегированная статистика по выполнению подготовленного запроса.
-
SUM_xxxОстальные столбцы
SUM_такие же, как в таблицах сводки запросов (см. Раздел 29.12.20.3, «Таблицы сводки запросов»).xxx -
MAX_CONTROLLED_MEMORYСообщает максимальный объем контролируемой памяти, используемой подготовленным запросом во время выполнения.
-
MAX_TOTAL_MEMORYСообщает максимальный объем памяти, используемой подготовленным запросом во время выполнения.
Таблица prepared_statements_instances имеет следующие индексы:
Основной ключ по (
OBJECT_INSTANCE_BEGIN)Индекс по (
STATEMENT_ID)Индекс по (
STATEMENT_NAME)Индекс по (
OWNER_THREAD_ID,OWNER_EVENT_ID)Индекс по (
OWNER_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAME)
TRUNCATE TABLE сбрасывает статистические столбцы таблицы prepared_statements_instances.
© 2025 Oracle
Licensed under the GPLv2 License.