Если на каждой странице стоит обращение в поисках новых писем:
SELECT COUNT(*)
Запрос делается мгновенно, вопрос такой если в таблице будет 1 млн. строк и на сайте будет одновременно скажем 100 тысяч юзеров. Каждый будет тыкать свои страницы но каждое нажатие будет вызывать SELECT COUNT(*).
Насколько сильно скажется на производительности? Просто в локальных условиях тяжело протестить на такую нагрузку.
Подумал сделать таймер, чтоб не каждую перезагрузку, а только если истекло, скажем 5 минут. Но вроде как обманывать пользователя. Вдруг ждет письмо.
Что думаете? Спасибо.
Спустя 48 минут, 46 секунд (1.10.2012 - 07:21) Игорь_Vasinsky написал(а):
это быстрее чем mysql_num_rows()

Цитата |
скажем 5 минут. Но вроде как обманывать пользователя. Вдруг ждет письмо. |
ну тут 2 варианта
1. производительный сервер
2. - кнопочка - проверить почту.
Спустя 1 час, 30 минут, 50 секунд (1.10.2012 - 08:52) twin написал(а):
Почему два варианта... Есть третий. Добавить поле в таблицу юзеров.
Наверняка есть таблица, которая дергается при каждом обращении пользователя, и в которой его установочные данные. Правда многие считают это неоправданным и пишут эти данные в сессию, но это не совсем верно. Во-первых, так невозможно отследить, с одного IP юзер в аккаунте или их уже несколько с разных. Во-вторых, так будет невозможно изменить статус, допустим повысить пользователя в модераторы или присвоить другое ефрейторское звание. Только после выхода и входа. В третьих, так труднее забанить нерадивого. Ну и еще куча. Да и сессию нельзя назвать особой экономией.
Так вот, в эту таблицу можно добавить поле, куда писать количество новых писем. А при прочтении письма - отнимать. Тогда лишних запросов не будет, нагрузка увеличится незначительно и письма будут отслеживаться в динамике.
Наверняка есть таблица, которая дергается при каждом обращении пользователя, и в которой его установочные данные. Правда многие считают это неоправданным и пишут эти данные в сессию, но это не совсем верно. Во-первых, так невозможно отследить, с одного IP юзер в аккаунте или их уже несколько с разных. Во-вторых, так будет невозможно изменить статус, допустим повысить пользователя в модераторы или присвоить другое ефрейторское звание. Только после выхода и входа. В третьих, так труднее забанить нерадивого. Ну и еще куча. Да и сессию нельзя назвать особой экономией.
Так вот, в эту таблицу можно добавить поле, куда писать количество новых писем. А при прочтении письма - отнимать. Тогда лишних запросов не будет, нагрузка увеличится незначительно и письма будут отслеживаться в динамике.
Спустя 2 часа, 47 минут, 2 секунды (1.10.2012 - 11:39) GET написал(а):
Игорь_Vasinsky
1. Ну да.
2. Не юзабилити мне кажется.
twin
Я понял смысл...спасибо.
При той нагрузке, что я описал выше SELECT `id` против 2-х SELECT COUNT(*) ..гм
Хотя конечно много зависит от архитектуры самого сайта.
Все же хотел узнать ваше мнение о 5 минутах ожидания письма. Не сильно страшно?
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 написал(а):
Хотя, наверное нет действительно надо постоянно проверять, например, ситуация юзер забанен или удален, а он в процессе сидит и у него все работает!
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.