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

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

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

Share this post


Link to post

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

Share this post


Link to post

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...