Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Одмин

Большие темы

Рекомендованные сообщения

Добрый вечер!

 

Некоторые люди считают, что при работе с большими темами (от 10000 и выше сообщений), создается большая нагрузку на БД. Так ли это?

 

Я пытался мыслить логически и поэтому не согласен с данным утверждением. Поскольку при чтении темы, она не открывается полностью, а только одна из страниц, что выдает пользователю из базы только содержимое данной страницы (а не всей темы сразу), нагрузка на базу идет ровно такая же, как и при чтении (просмотре) любой другой темы.

 

Так ли это на самом деле? Каково будет ваше мнение по данному вопросу?

Поделиться сообщением


Ссылка на сообщение

Отчасти это так. Проблема заключается в смещение (offset) которое используется в LIMIT. При запросе первой страницы LIMIT 0,20 - mysql вернет первые 20 записей, здесь все работает быстро и у нас претензий нет. А теперь представьте что у вас 10000 и больше сообщений, и происходит запрос со смещением LIMIT 10000,20. Mysql вынужден будет отыскать 10000 + 20 записей и только потом вернуть 20 из них (количество сообщений на одной странице). А если учитывать то, что все это происходит вкупе с ORDER BY, он вынужден будет сначала еще отсортировать их. И здесь уже начинаются реальные тормоза, с которым наглядно можно столкнутся в одних из версиях 3.3x Время генерации страниц в темах . Но такой запрос можно оптимизировать, главным образом тем, чтобы сначала отыскать нужные первичные ключи - сделать сортировку, выполнить смещение, а потом по ним выбрать записи. При таком подходе даже с 800k записей (800000/20 = 40000 страниц в одной теме(!)) результаты практически будут одинаковы, разница между запросом первой и последней страницы будет пару долей миллисекунд.

В итоге - да, без оптимизации запроса, чем больше сообщений в теме и чем дальше "в лес" продвигаемся по ней, тем существеннее будет время выполнения. На 100 странице разница уже ощущутима в сравнение с первой. С оптимизацией, которая используется на форуме, мы можем иметь тему с 40000 страниц с практически не ощутимой разницы между первой и последней страницы.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

@siv1987, что посоветуете делать с подобными темами? Закрывать и открывать новые?

Поделиться сообщением


Ссылка на сообщение

В итоге есть заключения относительно больших тем (40К страниц и более). Дальше решайте сами - нужны вам большие темы или нет, здесь уже наверное стоит рассматривать больше с точки зрения юзабилити чем нагрузки ибо она будет не существенная даже в большой теме по несколько сотен страниц и более.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...