Одмин Posted August 23, 2014 Share Posted August 23, 2014 Добрый вечер! Некоторые люди считают, что при работе с большими темами (от 10000 и выше сообщений), создается большая нагрузку на БД. Так ли это? Я пытался мыслить логически и поэтому не согласен с данным утверждением. Поскольку при чтении темы, она не открывается полностью, а только одна из страниц, что выдает пользователю из базы только содержимое данной страницы (а не всей темы сразу), нагрузка на базу идет ровно такая же, как и при чтении (просмотре) любой другой темы. Так ли это на самом деле? Каково будет ваше мнение по данному вопросу? Link to comment Share on other sites More sharing options...
siv1987 Posted August 24, 2014 Share Posted August 24, 2014 Отчасти это так. Проблема заключается в смещение (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 страниц с практически не ощутимой разницы между первой и последней страницы. 1 Link to comment Share on other sites More sharing options...
Одмин Posted August 24, 2014 Author Share Posted August 24, 2014 @siv1987, что посоветуете делать с подобными темами? Закрывать и открывать новые? Link to comment Share on other sites More sharing options...
siv1987 Posted August 24, 2014 Share Posted August 24, 2014 В итоге есть заключения относительно больших тем (40К страниц и более). Дальше решайте сами - нужны вам большие темы или нет, здесь уже наверное стоит рассматривать больше с точки зрения юзабилити чем нагрузки ибо она будет не существенная даже в большой теме по несколько сотен страниц и более. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now