@kally

Когда имеет смысл делать несколько таблиц с комментариями?

1) Если речь идет о форуме, то есть ли смысл автоматически создавать новую таблицу комментариев для каждой новой темы?
2) Тот же вопрос о статейном сайте, где под каждой статьей будет до 50 комментариев в среднем.
3) Наличие отдельных таблиц ускорит загрузку? Ведь если имеется 100 тем и к каждой оставляется примерно 100 комментариев, то в случае с объединенной таблицей система пробегает 10 000 комментариев, но если отдельные таблицы, то система ищет между 100 таблицами, и получается в 100 раз быстрее?
4) Есть ли разница в скорости пробега по одной таблице или списке таблиц такой же длины?
  • Вопрос задан
  • 919 просмотров
Сложность: Junior
Решения вопроса 6
  • longclaps
    @longclaps
    О, набежали подписанты )
    Идея дурацкая и вредная, всем коментам место в одной таблице, и быстрее будет, и сохраннее.
    Почитать про индексы даже не советую - бесполезно.
    Ответ написан
  • Melkij
    @Melkij
    PostgreSQL DBA
    И получается дико неудобно и значительно медленнее в итоге.
    Не касаясь лимита на число открытых файловых дескрипторов, кучу internal статистики планировщика и прочих деталей реализации.

    Форум. Банальная страница профиля пользователя, достать последние 10 сообщений этого пользователя - как? union all по всем темам с filesort последующим вместо простого index scan по составному ключу даже без необходимости в сортировке?
    Статьи. Показать для модерации последние комментарии

    А распилить большую таблицу (только на самом деле большую, а не в смешные лям строк) на части - вещь неплохая. Только не так надо пилить. Есть у mysql штатное партицирование.
    Ответ написан
  • 1. У вас на форуме 1000 тем, у вас будет 1000 таблиц для каждой темы?
    В чем проблема создать просто таблицу комментариев где будут храниться поля
    id
    user_id
    post_id
    text
    2. Таже самая схема что и в 1 случае выше
    3. Как вы хотите потом запросы писать то? У вас проект умрет на поддержке. Если построить продуманный запрос, то со скоростью все будет нормально.
    4. На это вопрос не могу дать ответа. Попробуйте создать бд и протестировать. Конечно таблица в 100 000 строк будет обрабатываться медленнее чем 10 000 таблиц в которых 10 записей
    Ответ написан
  • maximw
    @maximw
    Это вариант шардирования по таблицам.
    На ваших числах смысла не имеет. Да, будет быстрее выборка комментариев к одному посту, но едва ли покроет накладные расходы на чтение из разных таблиц, т.к. скорее всего будут запросы не просто "дай комментарии к этому посту", а например "посчитай комментарии к постам на первой странице с группировкой по посту".
    Имеет смысл, если у вас очень немного постов, в пределах пары сотен и в них очень много комментариев - миллионы или даже десятки миллионов. Но это не подходит не под один из описанных случаев.
    Ответ написан
  • manwe_ru
    @manwe_ru
    Ну во первых стоит разобраться что такое индексы.
    https://ruhighload.com/post/%D0%A0%D0%B0%D0%B1%D0%...
    Вы должны понимать, что бы ощутимо замедлить выборку с индексами нужны огромные количества данных. А если хостинг на SSD, то вообще вопрос с шардингом должен ставиться только в крайних случаях, например когда места да диске не хватает.
    Вот ознакомительные статьи про шардинг
    https://ruhighload.com/post/%D0%93%D0%BE%D1%80%D0%...
    https://ruhighload.com/post/%D0%92%D0%B5%D1%80%D1%...
    Ответ написан
  • @PravdorubMSK
    система пробегает 10 000 комментариев
    куда она пробегает? за пивом?
    все комментарии держать в одной таблице
    сделать индексы соответствующие
    все

    ps
    10 000
    -это ничто. текстовой файл даже тормозить не будет при таком объеме ))
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы