2012-09-25 1 views
1

В руководстве указано, что «SQL_NO_CACHE» предотвращает запрос в кеш. Но он ничего не говорит об использовании кеша, который я вижу.Предоставляет ли директива «SQL_NO_CACHE» предотвращение использования запроса кешем или просто добавление к нему?

Я пытаюсь сравнить две версии запроса, но они уже запущены без «SQL_NO_CACHE». Поэтому я не знаю, используют ли мои тесты кеш запросов или нет.

Предоставляет ли директива «SQL_NO_CACHE» предотвращение использования кеша или просто добавление к нему?

ответ

2

Кэш запросов MySQL индексируется на основе полного, буквального текста запроса, поэтому функционально никакой разницы: даже если директива была проигнорирована, результаты запроса с SQL_NO_CACHE будут храниться в другом кэше " слот "из запроса без SQL_NO_CACHE. (Действительно, просто добавив пробел в запрос где-нибудь или изменив «SELECT» на «select» - например, также «повредил» кеш запросов, заставив его снова запустить. Кэш запросов MySQL не особенно сложный.)

это, как говорится, быстрый тест, выполнив запрос с SQL_NO_CACHE и наблюдая QCACHE_QUERIES_IN_CACHE статус подтверждает, что SQL_NO_CACHE ли предотвратить переменные из хранится в кэше, и взгляд на the source делает вид, что присутствие SQL_NO_CACHE также заставит MySQL проверять кеш для получения результатов.

Смежные вопросы