Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Одмин

Большие темы

Recommended Posts

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Отчасти это так. Проблема заключается в смещение (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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...