Узнать, закэширован ли запрос

bfg9k
Дата: 06.02.2013 19:26:36
Нужно предсказать, будут ли браться результаты запроса из кэша или же запрос выполнится. Хотелось бы посмотреть сам кэш запросов mysql, но нигде не могу найти как это сделать.

Есть один способ: SHOW PROFILES , SHOW PROFILE FOR QUERY <id> - он не работает. Почему не работает, поясню на примере:

select * from table1 - запрос не в кэше (id=1)
select * from table1 - запрос в кэше (id=2, поменялось)
delete * from table1 - проверяем для запроса с id=2, и он в кэше.

Но на самом деле уже конечно нет, данные то поменялись. Таким образом SHOW PROFILE FOR QUERY мне даст историю запросов, но никак не информацию по строке запроса.
miksoft
Дата: 06.02.2013 19:32:21
точная версия MySQL ?
bfg9k
Дата: 06.02.2013 19:37:42
5.1.51 (windows). Также проверял на другой машине (debian), там тоже 5.1.
netwind
Дата: 06.02.2013 20:00:41
bfg9k
Нужно предсказать, будут ли браться результаты запроса из кэша или же запрос выполнится. Хотелось бы посмотреть сам кэш запросов mysql, но нигде не могу найти как это сделать.

есть плагины на это. но там по-моему кроме текста дополнительно ничего не выводится.

что вы там за ерунду выдумали не понятно.
результаты профилирования доступны всегда и показывают был ли запрос в кеше на момент его запуска
bfg9k
Дата: 06.02.2013 20:12:17
Я про то и говорю. А мне нужно узнать, есть ли они там сейчас.
Ерунда заключается в следующем - кэширую веб-страницу на сервере. Чтобы узнать актуальна ли страница, хочу узнать актуальны ли запросы, которые ее собирают.
netwind
Дата: 06.02.2013 20:16:10
bfg9k, прекратите кешировать и спите спокойно. "кеширование is considered harmful" (c) Дейкстра
miksoft
Дата: 06.02.2013 20:17:15
bfg9k
Чтобы узнать актуальна ли страница, хочу узнать актуальны ли запросы, которые ее собирают.
Странная логика.
На кэшировании результатов запросов в MySQL нельзя строить какую-либо логику, т.к. есть множество причин, по которым оттуда вымываются данные. И это далеко не только изменение данных в таблицах.
bfg9k
Дата: 06.02.2013 20:22:39
miksoft
Странная логика.
На кэшировании результатов запросов в MySQL нельзя строить какую-либо логику, т.к. есть множество причин, по которым оттуда вымываются данные. И это далеко не только изменение данных в таблицах.


Да пускай. Если хоть какой-то процент страниц будет выдано из кэша - уже хорошо. Главное, чтобы протухшие страницы в выдачу не попадали. Впрочем, господа, вы отходите от собственно заданного мной вопроса. Что за плагины вы упоминали?
miksoft
Дата: 06.02.2013 20:25:06
bfg9k
Если хоть какой-то процент страниц будет выдано из кэша - уже хорошо. Главное, чтобы протухшие страницы в выдачу не попадали.
С этим MySQL и сам прекрасно справится.
Случаев, чтобы из кэша выдавались протухшие данные я, например, не встречал.
netwind
Дата: 06.02.2013 20:25:30
bfg9k, это для тех кто будет читать тему потом. Вам плагины не нужны.
Кеш в mysql ВСЕГДА актуальный. Не нужно ничего в нем проверять.