Spec-Zone.ru › MySQL 5.7

25.12.6.4 Таблица prepared_statements_instances

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

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

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

    SQL-запрос Соответствующая серверная команда
    PREPARE SQLCOM_PREPARE
    EXECUTE SQLCOM_EXECUTE
    DEALLOCATE PREPARE, DROP PREPARE SQLCOM_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;
    
  • TIMER_PREPARE

    Время, затраченное на саму подготовку запроса.

  • COUNT_REPREPARE

    Количество раз, когда запрос был повторно подготовлен внутри (см. Раздел 8.10.4, «Кэширование подготовленных запросов и хранимых программ»). Статистические данные по времени повторной подготовки недоступны, так как они учитываются как часть выполнения запроса, а не как отдельная операция.

  • COUNT_EXECUTE, SUM_TIMER_EXECUTE, MIN_TIMER_EXECUTE, AVG_TIMER_EXECUTE, MAX_TIMER_EXECUTE

    Агрегированная статистика по выполнениям подготовленного запроса.

  • SUM_xxx

    Остальные столбцы SUM_xxx аналогичны столбцам таблиц сводки запросов (см. Раздел 25.12.15.3, «Таблицы сводки запросов»).

TRUNCATE TABLE сбрасывает столбцы статистики в таблице prepared_statements_instances.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/performance-schema-prepared-statements-instances-table.html

Spec-Zone.ru

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