это к максу, я могу также как и ты, судить империативно, однако у тебя в расчетах ошибка - сообщения не валятся непрерывным потоком - в 4 часа ночи по москве - их мало, а в рабочее время - «много», а сколь это «много» я могу лишь судить по треккеру
mysql> select max(id), count(*) from users;
+---------+----------+
| max(id) | count(*) |
+---------+----------+
| 96621 | 15605 |
+---------+----------+
1 row in set (0.06 sec)
Те же самые спаммеры, например, не дремлют.
однако у тебя в расчетах ошибка - сообщения не валятся непрерывным потоком
А это пофиг. mysql на update num_posts будет тратить в худшем случае единицы миллисекунд. Даже при двух записях в секунду нагрузка будет совершенно незаметной. А две записи в секунду — это экзотика и редкость.
В общем, никак сова на глобус не натягивается. О чём вся вменяемая мировая практика и говорит. На любых популярных форумных движках (включая форумы, где нагрузка на порядок с лишним выше ЛОРовской) используют поле числа сообщений юзера.
И только ЛОР, оказывается, занимается хитрыми велосипедостроениями :)
А это пофиг. mysql на update num_posts будет тратить в худшем случае единицы миллисекунд. Даже при двух записях в секунду нагрузка будет совершенно незаметной. А две записи в секунду — это экзотика и редкость.
запись в таблицу - требует обращения к диску, а чтение -нет если у нас табличка закешировалась, а это выйдет боком
но на самом деле непонятно что мы обсуждаем, если ве кешируется уже:
А я где-то говорил про R/W? Я про общий вклад в нагрузку на БД. Обновление числа сообщений юзера — копеечная операция, на которой никак ничего не сэкономить. Отрицать это может только человек, совершенно не знакомый с форумной практикой.
Более того, на нормальном форуме при каждом постинге итак придётся обновлять запись юзера. Ибо там обычно хранится не только число ответов, но и дата последнего сообщения, нередко — хэш последнего сообщения для избегания дублей и т.п.
таблиц размером пусть даже в 100 тыс. записей говорить о цене единичных update — это смешно.
Об одном update говорить действительно смешно. Но текущее положение вещей можно объяснить двояко - сделать «как у всех» действительно проблемно или - так сложилось исторически.
Отрицать это может только человек, совершенно не знакомый с форумной практикой.
Ты сделал мой день. Говорю это как человек, в своё время занимавшейся оптимизацией этого вашего phpBB(тогда еще 2.x) под нужды заказчика. В том числе и оптимизацией запросов...
Для оптимизации я периодически пересчитываю счетчики сообщений для всех пользователей и выдаю их с округлением до 1000 (т.к. счетчик все равно отстает от текущего количества).
Которая обычно хранится в соответствующем поле БД пользователя и ничего не стоит. А обновление её нужно только при ответе и оказывается совершенно копеечным.
а если коммент удалили? А если звездатые его всё равно видят, ибо оно в «показывать удалённые»? А если оно в клубе?
Вообще, вопрос «сколько всего комментов у юзера» не так уж и прост. Если-бы тут комменты хранились вечно, и стирать их было невозможно…
А ты говоришь «сколько комментов юзер ОТПРАВИЛ». Это другое. Бот может Over9000 комментов отправить, их тоже считать?
Человек, забивший гвоздь, начинает считать себя великим столяром?
Я не говорил что я гуру в этом - судя по упоминанию древней версии можно сделать вывод, что я этим больше не занимаюсь - следовательно вполне могу чего-то принципиально нового не знать. Но ты же приравниваешь меня к тому, кто вообще не имел никакого отношения к этой области - а это как минимум неправда.