У провайдера зависают запросы SMF 1.1 RC2

Автор egorovv, 02 марта 2006, 18:44:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

egorovv

 :(

Всем день добрый!

Такая проблема: у провайдера висит куча запросов к базе данных, выглядит он примерно так:

INSERT IGNORE INTO smftmp_log_search_topics (ID_TOPIC)


Что-то еще там дальше , я не переписывал. Может както надо пропатчить SMF 1.1 RC2 ?  Я его как обновил с RC1 так и не патчил.

Спасибо.

Mavn

Как обновлял? запускал ли скрипт upgrade.php? потому как если просто зальешь файлы на хост это не значит что ты обновил форум поэтому стоит запустить скрипт в общем попробуй еще раз провести процедуру обновления предварительно сделай бэкап на всякий случай!!!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

egorovv

Цитата: Mavn от 02 марта 2006, 23:44:56
Как обновлял? запускал ли скрипт upgrade.php? потому как если просто зальешь файлы на хост это не значит что ты обновил форум поэтому стоит запустить скрипт в общем попробуй еще раз провести процедуру обновления предварительно сделай бэкап на всякий случай!!!

Ну да, конечно запускал upgrade.php, а что никаких патчей к RC2 не было?

Mavn

не было за исключением того что исправили баг с FireFox так что можешь заново закачать файлы для форума и попробовать
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Dexter

У меня похожая проблемма на хостинге 1GB. Регулярно сыпят предупреждениями типа:

Время исполнения, секунд   - 56
Кол-во просмотренных строк - 206726
Запрос:
-------
INSERT IGNORE INTO yabbse_log_search_results
                  (ID_SEARCH, relevance, ID_TOPIC, ID_MSG, num_matches)
               SELECT
                  5,
                  1000 * (30 * COUNT(*) / (t.numReplies + 1) + 25 * IF(MAX(m.ID_MSG)
< 245515, 0, (MAX(m.ID_MSG) - 245515) / 105222) + 20 * IF(t.numReplies
< 200, t.numReplies / 200, 1) + 15 * 0 + 10 * IF(MIN(m.ID_MSG) = t.ID_FIRST_MSG,
1, 0) + 0 * t.isSticky) / 100 AS relevance,
                  t.ID_TOPIC,
                  MAX(m.ID_MSG) AS ID_MSG,
                  COUNT(*) AS num_matches
               FROM (yabbse_topics AS t, yabbse_messages AS m)
               WHERE t.ID_TOPIC = m.ID_TOPIC
                  AND m.body LIKE '%грибы%'
                  AND m.ID_BOARD IN (55, 34, 18, 40, 76, 41, 5, 77, 79, 78, 60,
1, 6, 14, 7, 46, 47, 48, 59, 74, 71, 70, 37, 33, 49, 51, 52, 53, 24,
8, 73, 75, 28, 23, 31, 27, 35, 32, 29, 38, 30, 19, 16, 17, 10, 62,
63, 65, 56, 57, 58, 66, 67, 68, 36, 42, 64)
               GROUP BY t.ID_TOPIC
               LIMIT 6000;
-------

Пока ограничивался отключением поиска на форуме. В прошедшие выходные обновил до версии 1.1.3. Включил поиск. Надеялся проблема исчезнет, но нет, снова прислали предупреждение.
В ближайшее воемя буду переезжать на другой хост, но все-же в чем проблема. Техподдержка пеняет на плохие скрипты форума.
Первый Камчатский Форум https://pkforum.ru

digger®

Сдается мне что в _log_search_results пишется лог эффективности поисковых запросов.
Возникает вопрос, зачем он вообще нужен и используется ли для чего-нибудь?

В настройках поиска какое ограничение количества результов?
Не 6000 тысяч? Если да, то зачем так много?

zmeuka

Ох, тяжеловат поиск-то. Я как раз сажаю SMF на довольно посещаемый ресурс - судя по всему, придётся поисковую часть переписывать под fulltext index / match() ... against(...boolean).

Уже проводил такую франкенштейновскую хирургию на нескольких проектах - иногда (в зависимости от изначальной реализации поиска) становится легче в несколько СОТЕН раз. По банальной причине - like '%...%' ищет только полным перебором записей, match() использует индекс.

digger®

Цитата: zmeuka от 30 июля 2007, 04:24:27
Ох, тяжеловат поиск-то. Я как раз сажаю SMF на довольно посещаемый ресурс - судя по всему, придётся поисковую часть переписывать под fulltext index / match() ... against(...boolean).

Вообще SMF поддерживает и полнотекстовое индексирование и собственную реализацию индексов.

zmeuka

Лучший способ разобраться - скурить всю документацию, после чего провести аудит кода. :) Времени отнимает много, зато потом на глупые грабли не наступаешь...

Dexter

Цитата: digger от 30 июля 2007, 03:57:57
В настройках поиска какое ограничение количества результов?
Не 6000 тысяч? Если да, то зачем так много?
Интересная идея. В настройках поиска я не догадался покопаться. Сейчас включил индексирование поиска. Посмотрю результат.
Первый Камчатский Форум https://pkforum.ru

digger®

Цитата: Dexter от 30 июля 2007, 10:44:15
Интересная идея. В настройках поиска я не догадался покопаться. Сейчас включил индексирование поиска. Посмотрю результат.
А поиск без индексов что ли был? Вот поэтому и тормозной такой.
Включи "Выборочное индексирование" и ограничь количество результатов.

Dexter

Цитата: digger от 30 июля 2007, 10:52:37
А поиск без индексов что ли был? Вот поэтому и тормозной такой.
Включи "Выборочное индексирование" и ограничь количество результатов.
Угу, спасибо, сделано.
Еще такого рода пришло предупреждение:

Время исполнения, секунд   - 34
Кол-во просмотренных строк - 2796
Запрос:
-------
use 1gb_pkforum;
SELECT subject, posterTime, body, IFNULL(mem.realName, posterName)
AS posterName
      FROM yabbse_messages AS m
         LEFT JOIN yabbse_members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
      WHERE ID_TOPIC = 1043
      ORDER BY ID_MSG;
-------

Буду благодарен за помощь...
Первый Камчатский Форум https://pkforum.ru

Mavn

на больших форумах лучше использовать индексирование для поиска потому как без него форум будет тормозить и создавать большую нагрузку на сервер при использовании поиска.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.