Перейти к контенту
  • 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 специально не настраивал. Мне кажется не стоит ничего трогать, если сильно увеличивается время генерации страниц - меняйте хостера.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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