Кэширование MYSQL запросов

e2site

Новичок
Кэширование MYSQL запросов

Как средствами php можно организовать кэширование mysql запросв. И может кто подскажет, есть ли где пример посмотреть.
 

A1x

Новичок
в ADODB вроде есть, но никогда не пользовался. Зачем если у MYSQL у самого такая фича есть?
 

Фанат

oncle terrible
Команда форума
PHP:
<?PHP
echo "Я обещаю никогда не кидаться за новыми технологиями, не понимая их смысла и не зная, зачем они мне нужны";
echo "При обращении на форум  обещаю излагать изначальную проблему, а не просить помощи в реализации непонятных фантазий";
?>
 

Sawa

Новичок
никак, пхп это язык, мускл - база. сам по себе mysql может кэшировать, смотри документацию.

но если очень нужно, можно сохранять результаты запроса, потом подгружать их, к примеру ночью\утром\днем генерировать html страницы из базы, все пользователи смотрят уже готовое и базу не трогают. не делай граблей и не сохраняй в файлы промежуточные варианты для последующего разбора
 

Alexandre

PHPПенсионер
есть очень много информации на эту тему, и много разных пхп-скриптов.
Зачем если у MYSQL у самого такая фича есть?
фича не всегда эффективно работает, если много разных запросов или есть нагрузка...но на эту тему почему-то находится много "светлых голов", которые очень любят пофлеймить, а надо ли кешировать мускуль-запросы или нет...

в свое время мной была сделана такакя вот поделка
зарекомендовала себя не плохо, но есть ограничения

что интересного в моей фичи, это то, что ты можешь выбирать данные из кеша по частям, например для организации пейджинга.

есть готовое решение mysql_proxy но оно предназначено больше для балансировки, а не для кеширования.
 

Фанат

oncle terrible
Команда форума
Alexandre
то есть, если юзер запросил первую страницу каталога, у тебя выбирается весь?
Хороший кэш. Уважаю.
 

Alexandre

PHPПенсионер
Ром,
есть два пути решения любой задачи:
делать все в лоб, иногда даже не задумываясь: часто дает положительный эффект

и подумать как оно должно работать, расчитать необходимые объемы и с учетом специфики подогнать под оптимальный режим
вторым путем возни больше, по этому по нему идут не многие.

говоря про А, мы часто пропускаем, что это дает эффект при условии В и натыкаемся на комменты : а что будет при условии С. все индивидуально и ты это знаешь лучше меня.
 

e2site

Новичок
в общем спрошу по другому.
У меня есть таблица
id name title

скажем из скрипта делается запрос для получения по id поля name. Возможно(!!!) потом потребуется еще и поле title, тогда получится, что мне придется 2 раза выполнить запрос:

1. SELECT name FROM tb WHERE id='1'
2. SELECT title FROM tb WHERE id='1'

А если таблица будет больше и данных будет больше, то очень много запросов будет одинаковых.

Казалось бы можно сделать запрос:

SELECT name,title FROM tb WHERE id='1'

Но тогда мне придется хранить в памяти значение title, а возможно мне оно и не понадобится.

Что бы было меньше вопросов:

Скажем все делается через функции:
1. выводит name
2. выводит title

Но скажем функция которая выводит title не обязательная. Т.е. ей могут просто не пользоваться

P.S. кто знает хостеры включают кэширования mysql? А то может я велосипед сижу изобретаю.
 

Фанат

oncle terrible
Команда форума
оборжаться.

Alexandre
ты почитай вот это объяснение ниже.
а потом предлагай свои нанотехнологии :)

-~{}~ 23.10.09 13:38:

e2site
От лица администрации форума официально выражаю благодарность за Своевременный Пятничный пост!
 

A1x

Новичок
Автор оригинала: Alexandre
а надо ли кешировать мускуль-запросы или нет...
конечно бывает что надо кешировать результаты запросов, но иногда надо кешировать и данные другого происхождения
Поэтому имхо в пхп скрипте лучше использовать более общее решение - кеширование данных не зависящее от того откуда эти данные.

Вот допустим я использовал в проектах Smarty и ADODB - первый может кешировать шаблоны, а второй SQL запросы, а мне допустим еще надо кешировать конфиги или что-то там еще. Получается надо писать для этого доп. код. В результате имеем 3 разных куска кода, которые делают по сути одно и то же.
Не лучше ли иметь одно общее решение для кеширования любых данных?
 

Фанат

oncle terrible
Команда форума
Не портьте своими заумными рассуждениями кристальную незамутненность изначального вопроса %)
 

A1x

Новичок
1. SELECT name FROM tb WHERE id='1'
2. SELECT title FROM tb WHERE id='1'
реально видел код в рабочем скрипте c идущими подряд запросами типа

UPDATE tb SET title = ' ... ' WHERE id='1'
UPDATE tb SET name = ' ... ' WHERE id='1'

- до этого я думал что то что пишут про индусов это сказки :)
 

e2site

Новичок
Автор оригинала: iceman
e2site
так ты уж, определись нужно тебе 2 поля или 1 =)))
я же написал что есть две функции:
1 выводит одно значение
2. другое

А пользователь может включить эту функцию а может и не включать
 
Сверху