php каждая тема длится только 100 комментариев - PullRequest
0 голосов
/ 18 октября 2011

я имею в виду случай, когда я разрешаю каждой теме иметь только 100 последних комментариев

в случае, если в теме уже 100 комментариев, и я добавляю новый комментарий. Я хочу удалить самый первый комментарий в100 комментариев цепочка и добавить новый, вот пример:

1,2,3 .... 99, 100

2,3,4 ....100, 101

, как вы можете видеть, самый первый комментарий, который был далеко позади остальных, был удален, а новый, попавший в цепочку из 100 комментариев

, здесь начинает проблему, еслиУ меня есть в моем случае форум, и этот форум имеет сотни тысяч тем, он может достигать миллионов комментариев, что означает, что если я проверю, сколько комментариев есть с каждым новым входящим комментарием, это приведет к замедлению сайта с каждым добавлением комментария, какМогу ли я минимизировать запросы к базе данных?Существуют ли какие-либо системные / известные способы решения подобных проблем?

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

Зачем вам удалять старые комментарии?Если вы хотите показать последние 100 комментариев, просто SELECT id, thread_id, user_id, comment_body from COMMENTS where thread_id = @thread_id LIMIT 100.Также убедитесь, что у вас есть индексирование по внешнему столбцу, чтобы он запрашивался быстро и запрашивал только те столбцы, которые вам нужны.

И нет, если вы собираетесь использовать запросы с умом, применяйте индексирование там, где это необходимо, тогда вам не нужнонужно беспокоиться о том, что каждый комментарий замедляет работу базы данных.Будете ли вы иметь миллионы миллионов комментариев?Если это так, вы можете подумать о разделении базы данных, скажем, каждые 1000000 * потоков на основе thread_id.

Вас может заинтересовать этот вопрос: Архитектура базы данных для миллионов новых строк вдень


* Для всех, кто читает: не воспринимайте это число как какой-то совет или совет из опыта.Никогда не говорите: «кто-то на SO упомянул это число x, так что ...» У меня нет опыта или критериев, чтобы сказать, что было бы хорошо сделать это по этому номеру.Я сам создаю свой первый раздел.Оцените себя, что хорошо для вас.

1 голос
/ 18 октября 2011

Какова ваша структура базы данных для этого материала?Предположительно, у вас есть таблица «posts» и таблица «comments», которая ссылается на таблицу «posts».При условии достойного дизайна, комментарии будут иметь первичный ключ auto_increment, поэтому ваша логика будет:

1. insert new comment
2. count the comments attached to the post. If it's > 100, then
3. find min(comments.id) and delete that ID.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...