Перейти к контенту
  • 0

Темы с большим числом постов и нагрузка на сервер


listos

Вопрос

Не знаю откуда это пошло, но говорят, что темы у которых большое количество сообщений приносят ощутимой нагрузку чем скажем темы с 10 страницами сообщений (250 штук).

 

Скажи так ли это? Я понимаю там есть выборка, но разве будет разница скажем между темой с 50 постами (2 страницы) и темой с 1000 постами (40 страниц)??

Стоит ли вообще из-за этого переживать?

Ссылка на комментарий
Поделиться на других сайтах

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

  • 0

В общем случае да.

По моим наблюдениям, есть как минимум 3 фактора, влияющих на время генерации страницы топика на одном и том же сервере:

  1. Количество постов в топике. Страница из 15 постов грузится вдвое дольше, если в топике несколько тысяч постов.
  2. Количество строк в ibf_posts. Если в ней 50-100 тысяч записей, страница топика генерируется вдвое дольше, чем на "нулевой" таблице.
  3. Размер самого большого сообщения на странице. Если хоть одно сообщение содержит больше чем 8-10 тысяч символов, страница генерится вдвое дольше, чем когда все сообщения меньше 4000 символов.

Вероятно, что-то может быть изменено настройками sql-сервера. Но для денвера или стандартного хостинга это так.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

я вот вчера с этим копался

не смотря на параметр limit просматриваются все записи в таблице

чем Их больше и чем Они больше, тем медленней все идет

 

идея - кешировать номера постов для темы и делать селект по WHERE id IN()

тогда используя примари кей запрос уменьшится во времени/увеличится в скорости раз в 100

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Если честно всегда держу темы не более 10х25 (страниц на сообщение). Просто даже читать как-то не удобно, поэтому как это принято делю на "томы".

Но вот сегодня нашел страницу 43х25 (1075постов) и попробовал сверить с темой 1х17 (17 постов).

Получилось что тема 43х25 на 0.0040сек (я не ошибся) грузилась больше темы где 1х17.

Причем запрос у 43х25 сделал произвольно на 40 или 35 страницу (точно уже не помню).

Правда в обоих темах посты имеют маленькие размеры не больше 1кбайт.

 

Поэтому сразу возник вопрос может я зря темы режу? (подумал может в 2.1 как то решили эту проблему).

 

Mysql настраивал так что на память он не обделен. Но в реале думаю что генерация просто из-за того что сохраняю "маленькие темы" (меньше 10 страниц), хотя точно не знаю.

 

PS

0.0040сек - среднее значение, проверенных в несколько перезагрузок, цифра взята с отладки форума

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Ради 0.0040 заморачиваться наврядли стоит. У вас сообщения довольно маленькие, так что и не ощущается ничего. В остальном FatCat подробно всё расписал. Можно немного уменьшить эффект увеличением размеров кешей и буферов MySQL, но это понадобится когда разница будет хотя бы 0.05-0.1.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Не факт...

Конструкции с IN() тоже тормозят на больших списках. http://phpforum.ru/index.php?showtopic=14715

FORCE INDEX ?

 

собственно запрос на сами посты идет как я сказал

много рядов затрагивает запрос

SELECT pid,topic_id FROM ibf_posts WHERE topic_id=135 ORDER BY post_date asc LIMIT 2900, 20

Он правда тоже идет по ключу topic_id

но мне кажется, можно сделать таблицу-кеш, в которой хранить соответствие

тема - сериализованный массив ("ид поста"=>"время поста")

тогда можно будет делать выборку идов на уровне игры с упорядочиванием массива, что избавляет от запроса, затрагивающего 3000 рядов

достаточно будет запроса, затрагивающего 1 ряд таблицы - кеша

но надо будет очень серьезно работать с этим кешем при удалении, написании, перемещении постов и т.д., а это много мест

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Проверил у себя:

Тема с 2мя постами - 0.0693 сек

Тема с 18347 постами - 0.1851 сек.

---------

На форуме сообщений: 365 006

Зарегистрировано пользователей: 52 691

 

mysql специально не настраивал. Мне кажется не стоит ничего трогать, если сильно увеличивается время генерации страниц - меняйте хостера.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.