SQL-запросы и кеш.

_vampiro_

Новичок
SQL-запросы и кеш.

Братья Грим вновь нагрянули, или "Сказка для Фаната"

Ну вот, я созрел для очередной мысли.
По БД делается много одинаковых (не однотипных) запросов. Все они используются в разных целях. Например - запрос информации о пользователе (не суть важно каком) происходит при каждом обращении к сайту.

Идея такая: Берем запрос "select * from ...". делаем по нему мд5. Получаем 32-х символьное имя файла. Ответ БД =>serialize и в тело файла с некоторой служебнй инфой.

при изменении даных в таблице - все кеши по ней чистятся.

Собственно, вопрос такой. Учитывая схожесть запросов, не будет-ли вариантов с одинаковыми md5? можно еще выкинуть из запроса весь мусор и использовать результат как имя файла - но опять же может быть совпадение. :(
 

Romantik

TeaM PHPClub
есть же готовые реализации в ADODB
посмотри как там реализовано.
 

_vampiro_

Новичок
В АДО свой интерфейс. Но поковыряться в исходниках не помешает. Полез "читать".

Заодно
http://dev.mysql.com/doc/refman/5.0/en/query-cache.html
Если кто потом будет тему через поиск читать.
 

Toshka

Новичок
а не получится, что это шаманство будет времени занимать больше, чем 1 запрос? уж лучше страничку кэшировать сразу:) имхо
 
Если кешировать результат, то лучше использовать готовый кеш MySQL (см. query_cache_size), не надо будет менять код и парсить сохраненный результат. Другое дело кешировать готовый html (см. PEAR Cache Cache_Lite)
 

Romantik

TeaM PHPClub
Toshka
в основном да- достаочно странички, но бывает много данных нужно за собой таскать (каталоги, дерево, расчеты) где повторные запросы.
Важно только учитывать момент времени, когда данные уже могут измениться... в этом случае у ADODB есть время кеширования.
ИМХО не продуманное использование есть зло и используя нужно проверять всеже изменения которые могут быть, особенно когда UPDATE
 

_vampiro_

Новичок
тут основная фишка в использовании результата запроса между многими страницами.
Например то же меню для разных групп юзеров - разное. Админам - одно, анонимам-второе. С меню, конечно, лучше сразу ХТМЛ кешить. :) но "случаи, они разные бывают" (с)
 

vasa_c

Новичок
А может в БД отдельную таблицу завести в которой будет лежать md5 -> serialize? :)
 

_vampiro_

Новичок
да я всё побаиваюсь одинаковых md5... строки то схожие сильно.

-~{}~ 20.06.06 17:45:

и поиск по текстовому полю... хоть и индексированному... это время. файл быстрее.
 

vasa_c

Новичок
_vampiro_, чем быстрее файл то?
Особенно куча файлов с 32-символьными именами в одном каталоге.

От схожести строк схожесть md5 не зависит. Наоборот коллизии на несхожих скорее появляться могут.
 
Сверху