Дайджест схемы производительности MariaDB не рассчитывается при одинаковом запросе

0

Моя проблема заключается в том, что если я дважды запускаю запрос, Digest и Digest_text не будут вычисляться снова в параметре performance_schema для второго запроса.
Пример:

SELECT * FROM state;

Вывод в events_statements_history_long выглядит так:

SQL_TEXT: SELECT * FROM state
ДАЙДЖЕСТ: f9842414749bbcda76ef05940ebc2f84
DIGEST_TEXT: SELECT * FROM state
LOCK_TIME: 372000000

Если я снова запустил запрос, event_statements_history_long выглядит так:

SQL_TEXT: SELECT * FROM state
DIGEST: null
DIGEST_TEXT: null
LOCK_TIME: 0

Что также странно, что значение LOCK_TIME равно 0 при второй попытке. Возможно ли какая-то оптимизация, когда расчет DIGEST не выполняется?
Я вижу это поведение во всех таблицах, у которых есть столбец дайджеста. Например

  • events_statements_history_long (digest столбца и digest_text)
  • events_statements_history (digest столбцов и digest_text)
  • objects_summary_global_by_type (column count_star не увеличивается)
  • events_statements_summary_by_digest (column count_star не увеличивается)

Я предполагаю, что эти значения не пересчитываются, если запрос не изменяется. Также, если у меня есть запрос с предложением where, дайджест вычисляется только при изменении предложения (например, от where foo='bar' до where foo='foo'), но нет, если не изменяется.

Поэтому мой вопрос: есть ли какие-то настройки (которые я не нашел через google или docs), чтобы включить вычисление дайджеста в любой таблице в каждом выражении?

Теги:
mariadb

1 ответ

0

Включен ли кеш запросов? QC делает дайджест очень рано, а затем, если он видит тот же дайджест, он возвращает ранее возвращенный набор результатов. То есть, выполнение инструкции исключается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню