Моя проблема заключается в том, что если я дважды запускаю запрос, 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 не выполняется?
Я вижу это поведение во всех таблицах, у которых есть столбец дайджеста. Например
digest
столбца и digest_text
)digest
столбцов и digest_text
)count_star
не увеличивается)count_star
не увеличивается) Я предполагаю, что эти значения не пересчитываются, если запрос не изменяется. Также, если у меня есть запрос с предложением where
, дайджест вычисляется только при изменении предложения (например, от where foo='bar'
до where foo='foo'
), но нет, если не изменяется.
Поэтому мой вопрос: есть ли какие-то настройки (которые я не нашел через google или docs), чтобы включить вычисление дайджеста в любой таблице в каждом выражении?
Включен ли кеш запросов? QC делает дайджест очень рано, а затем, если он видит тот же дайджест, он возвращает ранее возвращенный набор результатов. То есть, выполнение инструкции исключается.