Spec-Zone.ru › MySQL 9.2

29.12.6.4 Таблица prepared_statements_instances

Схема производительности предоставляет средства измерения для подготовленных запросов, для которых существуют два протокола:

  • Бинарный протокол. К нему осуществляется доступ через MySQL C API, и он отображается на соответствующие команды сервера, как показано в следующей таблице.

    Функция C API Соответствующая команда сервера
    COM_STMT_PREPARE
    COM_STMT_EXECUTE
    COM_STMT_CLOSE
  • Текстовый протокол. К нему осуществляется доступ с помощью SQL-запросов, и он отображается на соответствующие команды сервера, как показано в следующей таблице.

    SQL-запрос Соответствующая команда сервера
    PREPARE SQLCOM_PREPARE
    EXECUTE SQLCOM_EXECUTE
    DEALLOCATE PREPARE, DROP PREPARE SQLCOM_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_xxx столбцы такие же, как и для таблиц сводки запросов (см. Раздел 29.12.20.3, «Таблицы сводки запросов»).

  • 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/performance-schema-prepared-statements-instances-table.html

Spec-Zone.ru

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