Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кэширование запросов к базе 
:(
    Опции темы
Alix36
Дата 4.2.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: 1
Всего: 3



Вопрос стоит ли заниматься кэшированием результатов запросов к бд?
В файлы? иначе? 

Если рассмотреть процесс чтения из файла полученного ранее результсета получаем примерно следующее
0) генерим название кэш-файла
1) проверяем наличие кэш-файла if_exist 
Если нет файла - не кэшировали ранее, не идем дальше, делаем запрос а его результат пишем в файл
2) Считываем в память содержимое файла. 
3) парсим его в массив. через несколько циклов и explode

не быстрее ли будет просто сделать запрос повторно?



--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Muerto
Дата 5.2.2011, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Alix36, Обычно запросы быстрей, но зависит что за запрос...
Если запрос очень сложный который просчитывает что то, и не жизнено важно что бы данные не были актуальны по секундно, то можно кешировать и ускорить сайты...
Мне попадались в руки сайты которые грузились по 8 секунд... я их доводил до 0.04  smile 


--------------------
user posted image
PM MAIL   Вверх
Dima 2015
Дата 5.2.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



>> 3) парсим его в массив. через несколько циклов и explode

Боже Вас упаси, зачем? smile
json_decode / json_encode или serialize / unserialize и все.

Теперь касаемо кеширования. О нем надо задумываться когда о нем надо задумываться smile Да да... т.е. если тормозит что-то. Хороший пример для необходимости кеширования это какой-нибудь рейтинг. Например у вас 100 000 пользователей и у них есть показатель, ну допустим это абстрактный уровень. Вы хотите вывести топ по этому уровню. У 90 из 100 тысяч этот уровень равен 0 или 1, однако запрос с ORDER BY user_level будет перебирать всю таблицу чтоб упорядоичть по нему, причем даже индекс не поможет толком т.к. очень много повторных значений. Вот такую штуку очень полезно сложить в кеш. Можно в файловый, но лучше конечно в память если есть возможность.

Вообще надо исходить из задачи, нагрузки, проекта... опишите подробнее и подумаем smile

Лично мне кеширование понадобилось при посещаемости в 10 килоуников и размере табличек от 100к, но тут у каждого свое...
PM MAIL ICQ   Вверх
Alix36
Дата 5.2.2011, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: 1
Всего: 3



посещаемость ~ 5к пользователей в день 

Идея кэшировать запросы подкралась когда поняли что для разных пользователей выполняется масса запросов одинаковых. 

А если не в файлы писать, а в memcache сохранять, тогда от кодировани/декодирования можно избавиться... 

попробую завтра тест прогнать с включеным кэшированием запросов и без... 


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
SneG0K
Дата 5.2.2011, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Цитата(Muerto @  4.2.2011,  23:13 Найти цитируемый пост)
я их доводил до 0.04

Звучит как "Я их доводил до оргазма"  smile 

Мне понравилась идея кеширования в Мадженто.
Там у них двухуровневый кеш: сначала в память, потом на диск.
PM WWW Skype   Вверх
Dima 2015
Дата 5.2.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Цитата

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

Да, это именно тот случай - именно в таких случаях и нужно кешировать, в общем то рейтинги о которых я говорил это тот же самый пример - юзерво много а рейтинг один. Причем техники могут быть разные. Я, например, помнится некоторые топы вообще по крону в статический хтмл скидывал. Лучшего кеширования трудно придумать smile

Правда там свои сложности появляются, раз пошла статика, значит мы сразу теряем возможность вывести текущие данные пользователя.

Что еще сказать.. в мемкеш 100 пудов лучше чем в файлы, единственное что, надо в коде прописать ситуацию если мемкеш потер ключ, чтоб данные брались из базы.
PM MAIL ICQ   Вверх
Muerto
Дата 5.2.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Жаль что eaccelerator больше в память не дает гад заносить...
А вместе с ним кстати можно ещё memcache устанавливать?


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.