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
Средства измерения подготовленных запросов схемы производительности охватывают оба протокола. Следующее обсуждение относится к командам сервера, а не к функциям C API или 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.