[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос на количество запросов SELECT COUNT(*)
GET
Здравствуйте.

Если на каждой странице стоит обращение в поисках новых писем:
 SELECT COUNT(*)


Запрос делается мгновенно, вопрос такой если в таблице будет 1 млн. строк и на сайте будет одновременно скажем 100 тысяч юзеров. Каждый будет тыкать свои страницы но каждое нажатие будет вызывать SELECT COUNT(*).

Насколько сильно скажется на производительности? Просто в локальных условиях тяжело протестить на такую нагрузку.

Подумал сделать таймер, чтоб не каждую перезагрузку, а только если истекло, скажем 5 минут. Но вроде как обманывать пользователя. Вдруг ждет письмо.

Что думаете? Спасибо.



Спустя 48 минут, 46 секунд (1.10.2012 - 07:21) Игорь_Vasinsky написал(а):
это быстрее чем mysql_num_rows() wink.gif

Цитата
скажем 5 минут. Но вроде как обманывать пользователя. Вдруг ждет письмо.


ну тут 2 варианта

1. производительный сервер
2. - кнопочка - проверить почту.


Спустя 1 час, 30 минут, 50 секунд (1.10.2012 - 08:52) twin написал(а):
Почему два варианта... Есть третий. Добавить поле в таблицу юзеров.

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

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

Спустя 2 часа, 47 минут, 2 секунды (1.10.2012 - 11:39) GET написал(а):
Игорь_Vasinsky
1. Ну да.
2. Не юзабилити мне кажется.


twin

Я понял смысл...спасибо.

При той нагрузке, что я описал выше SELECT `id` против 2-х SELECT COUNT(*) ..гм

Хотя конечно много зависит от архитектуры самого сайта.



Все же хотел узнать ваше мнение о 5 минутах ожидания письма. Не сильно страшно?

Спустя 8 минут, 3 секунды (1.10.2012 - 11:47) Игорь_Vasinsky написал(а):
да терпимо.

Спустя 2 минуты, 5 секунд (1.10.2012 - 11:49) GET написал(а):
спасибо

Спустя 3 часа, 51 минута, 20 секунд (1.10.2012 - 15:41) twin написал(а):
ABC
Цитата
При той нагрузке, что я описал выше SELECT `id` против 2-х SELECT COUNT(*) ..гм
Я не то имел ввиду. Если есть данные юзера, которые берутся из базы на каждой странице (ну как на большинстве форумов к примеру), то не нужен дополнительный запрос. Просто добавить поле, в которое прибавлять количество непрочитанных писем. Ну или просто флаг, что они есть.

Запрос то все равно выполняется. Никаких каунтов вообще не нужно.

Спустя 12 часов, 10 минут, 23 секунды (2.10.2012 - 03:51) GET написал(а):
twin

Да точно, так будет лучше, просто дополнительное поле в таблице юзеров.

Единственное,
Цитата
которые берутся из базы на каждой странице

у меня, например, только один раз берется при авторизации или через куки, просто создаю переменные сессии с id юзера и логином (логин, чтоб просто отображать Добро пожаловать USER), как бы зачем постоянно дергать базу?

Спустя 13 минут, 42 секунды (2.10.2012 - 04:05) GET написал(а):
Хотя, наверное нет действительно надо постоянно проверять, например, ситуация юзер забанен или удален, а он в процессе сидит и у него все работает!


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.