Одмин 42 08/23/14 17:11 Добрый вечер! Некоторые люди считают, что при работе с большими темами (от 10000 и выше сообщений), создается большая нагрузку на БД. Так ли это? Я пытался мыслить логически и поэтому не согласен с данным утверждением. Поскольку при чтении темы, она не открывается полностью, а только одна из страниц, что выдает пользователю из базы только содержимое данной страницы (а не всей темы сразу), нагрузка на базу идет ровно такая же, как и при чтении (просмотре) любой другой темы. Так ли это на самом деле? Каково будет ваше мнение по данному вопросу? Поделиться сообщением Ссылка на сообщение
siv1987 2628 08/24/14 00:45 Отчасти это так. Проблема заключается в смещение (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 Поделиться сообщением Ссылка на сообщение
Одмин 42 08/24/14 08:24 @siv1987, что посоветуете делать с подобными темами? Закрывать и открывать новые? Поделиться сообщением Ссылка на сообщение
siv1987 2628 08/24/14 09:07 В итоге есть заключения относительно больших тем (40К страниц и более). Дальше решайте сами - нужны вам большие темы или нет, здесь уже наверное стоит рассматривать больше с точки зрения юзабилити чем нагрузки ибо она будет не существенная даже в большой теме по несколько сотен страниц и более. Поделиться сообщением Ссылка на сообщение