Mysql COUNT каждый раз или переменная сессии

DriverCat
На сайте с 10.04.2008
Offline
116
715

Есть несколько модулей на сайте, в которых показывается количество записей в базе данных. Всего получается около 6 запросов с COUNT к базе данных при загрузке любой страницы сайта. Вот думаю, будет ли лучше, если например при первом заходе на сайт, эти числа заносятся в сессию, и при открытии любой страницы потом уже не идет обращение к базе данных. Или здесь есть какие-либо подводные камни?

banshee(oleg)
На сайте с 12.08.2007
Offline
140
#1

Смотря какой объем считает этот коунт. Если большой (форумы, доски объяв), то имеет смысл хранить отдельную таблицу с коунтерами, скуркулировать ее один раз и потом апдейтить при добавлении/удалении соотвествующих элементов.

DriverCat
На сайте с 10.04.2008
Offline
116
#2
banshee(oleg):
Смотря какой объем считает этот коунт. Если большой (форумы, доски объяв), то имеет смысл хранить отдельную таблицу с коунтерами, скуркулировать ее один раз и потом апдейтить при добавлении/удалении соотвествующих элементов.

Таблица небольшая - в районе 3000 записей. НУ а по поводу хранения в сессии - как такой вариант?

Хотя щас подумал - Вы правы, лучше один раз в сутки обновлять эти данные, все равно они носят чисто информативный характер.

banshee(oleg)
На сайте с 12.08.2007
Offline
140
#3

Можно и по крону считать раз в период, можно апдейтить по мере добавления инфы... если посмотреть на монстров (форумы phpbb, напр.), то они хранят и периодчески синхронизируют. Я тоже к этому склоняюсь. А хранение в сессии хзхз.. чувство правильности мне подсказывает что это не гуд.

A
На сайте с 29.12.2007
Offline
68
#4

Поищи инфу по кешированию mysql. Либо просто кешируй сам (хоть в файл/сессию, хоть в мемкеш - второе предпочтительнее).

Dreammaker
На сайте с 20.04.2006
Offline
569
#5

DriverCat, сессия - она какбы индивидуальна и подсчёт будет вестись для каждого нового пользователя заново.

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий