Большая БД и поиск

Автор floydback, 27 января 2009, 12:03:09

« предыдущая - следующая »

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

floydback

Здравствуйте, уважаемая Администрация.

У меня к Вам есть вопрос.
Версия движка SMF 1.1.4.
В ней были сделаны некоторые изменения, касающиеся авторизации, а именно объединение общей авторизации с сайтом.
В итоге update сделать я не могу.
Разработчики, поддерживающие форум давно с ним не работали.
База форума выросла до 10 Гигабайт и теперь, когда нажимаешь "поиск" сервер начинает виснуть.

Какие решения Вы можете предложить?
"Оптимизировать таблицу" в админке - даст ли это что-то?
возможно нужно пересоздать индексы, тогда как правильнее это сделать.
Либо еще какие-то решения есть?

С уважением, Дмитрйи.

Mavn

Оптимизация врятли поможет.

Начнем с того что в smf 1.1.* при создании поисковых индексов создается таблица типа MyISAM  в этом основная загвоздка состоит. Дело в том что при поиске используется оператор SELECT который на время запроса блокирует таблицу, как результат растет очередь запросов потребляются ресурсы сервака и начинает все медленно работать. Выход есть конечно. Поменять немного код в самом smf чтобы таблица поиска создавалась с типом InnoDB ну и соотвественно пересоздать поисковые индексы.
На больших форумах вообще нужно переводить часть таблиц в InnoDB это несколько облегчит работу форума, скорость работы конечно немного потеряете но будет стабильность.
Вообще если так разбираться то на форумах с бд более 5 гигов будут возникать затыки во время поиска...
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

BIOHAZARD

Mavn, задам нескромный вопрос
У нашего любимого simplemachines.ru общий размер БД какого порядка?
Просто интересно, какие размеры могут быть типичными.
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

Ну у меня совсем маленький :) без поисковых индексов 45-55 мегов с поисковыми не более 100 мегов. Просто имеется опыт работы с базами smf более 20 гигов :)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

digger®

Цитата: floydback от 27 января 2009, 12:03:09
Здравствуйте, уважаемая Администрация.

У меня к Вам есть вопрос.
Версия движка SMF 1.1.4.
В ней были сделаны некоторые изменения, касающиеся авторизации, а именно объединение общей авторизации с сайтом.
В итоге update сделать я не могу.
Разработчики, поддерживающие форум давно с ним не работали.
База форума выросла до 10 Гигабайт и теперь, когда нажимаешь "поиск" сервер начинает виснуть.

Какие решения Вы можете предложить?
"Оптимизировать таблицу" в админке - даст ли это что-то?
возможно нужно пересоздать индексы, тогда как правильнее это сделать.
Либо еще какие-то решения есть?

С уважением, Дмитрйи.



Какие таблицы самые большие?

BIOHAZARD

Цитата: Mavn от 27 января 2009, 13:33:23
Ну у меня совсем маленький :) без поисковых индексов 45-55 мегов с поисковыми не более 100 мегов. Просто имеется опыт работы с базами smf более 20 гигов :)

Я просто на себя примеряю, стоит ли бояться такой же ситуёвины как у floydback, но, видимо, мне это не грозит ещё очень долго :о)
пока моему форуму меньше месяца (в рабочем режиме), размер всех баз около 1/3 метра, самая большая - мессаги - около 100 кб :о)
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

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

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

floydback


BIOHAZARD

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

____________________________________
и тут Остапа понесло...
начинаю флудерасить
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

floydback

У меня еще вопрос по этому поводу.
я смотрю таблицы,
smf_messages - довольна большая, 1.5 Гб. думаю ее почистить просто напросто. Но она уже InnoDB.
smf_sessions - типа MyISAM и весит более 5Гб. Я так понимаю, это таблица сессий авторизации пользователей.
Если так, почему она такая большая?
Возможно ее стоит очистить (trancate table)?
и пусть все пользователи заново залогинятся (удаление сессии ведь только так повлияет?)
Как Вы считаете, это сделать необходимо и верно ли?
Спасибо.

BIOHAZARD

да по идее они вообще никак не влияют (записи smf_sessions)
только придётся всем вспомнить свои логин и пароль :о)
очистку необходимой не назовёшь, но желательно сделать всёже

попробовал на локалхосте проделать эту процедуру, вроде ничего страшного не случилось, просто не определил форум как меня зовут, пришлось входить по новой


проблема поиска, это проблема прежде всего smf_messages
вполне логично, что чем больше поле деятельности для поиска, тем дольше он будет идти
но вот как её почистить? Просто удалить старые форумы - это наверное самое простое и верное
(Обслуживание форума - Удалить старые сообщения)

но подождём последнего слова от Mavn
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

digger®

Цитата: BIOHAZARD от 28 января 2009, 12:48:53
проблема поиска, это проблема прежде всего smf_messages


Проблема поиска - это проблема индексирования. Раз таблица сообщений не MyISAM, то полнотекстовое индексирование не используется. Значит или индексов вообще нет или используется выборочное индексирование. Если выборочное индексирование, то есть таблица с поисковыми индексами, на нее и нужно смотреть.

Mavn

на больших форумах можно вообще раз в сутки делать очистку таблицы smf_session табы бд не разросталась


Цитата: BIOHAZARD от 28 января 2009, 12:48:53
проблема поиска, это проблема прежде всего smf_messages

не правда :) при создании поисковых индексов создается дополнительная таблица smf_log_search_words и поиск производится по данной таблице. Прежде всего данная таблица была создана для того чтобы не блокировать частично или полностью smf_messages на время поиска.
Вообще если так разбирать то система поиска в smf наиболее слабое место. Рекомендуется особенно на больших форумах установить штуку под название sphinx. Говорю сразу установить его можно только если есть права root'a на серваке потому как это дополнительное программное обеспечение для улучшения поиска.

На офф сайте выкладывался мод для smf под это дело правда на форуме а не в модификациях так что кому нужно будет смогут найти.

Кстати на самом деле не только особо большие таблицы нужно переводить в InnoDB :) есть некоторые нюансы :)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

floydback

Цитата: Mavn от 28 января 2009, 13:41:06
Кстати на самом деле не только особо большие таблицы нужно переводить в InnoDB :) есть некоторые нюансы :)

а можно поподробнее про нюансы? ))

sphinx, я так понимаю, это что-то типа mnogosearch?

valaridz

Та же проблема - база более 5gb.

Наблюдаются проблемы с поиском и не только:)

Мне тоже порекомендовали:
1. перевести таблицы, по которым идут выборки в InnoDB
2. установить sphinx или другой внешний поиск (возможно google)

Что полностью совпадает с рекомендациями многоуважаемого Mavn. Еще одно подтверждение в правильности выбора:)

Вопрос:
1. какие конкретно таблицы необходимо перевести в Innodb? и как? Или просто заменить в phpmyadmin тупо сменить тип?:)
2. имеет ли значение для внешнего поиска тип таблиц? т.е. это независимые вещи? или их нужно комбинировать, и если да, то как это лучше сделать.
3. что все-таки лучше использовать sphinx или поиск от google (форум хорошо проиндексирован)

Заранее спасибо за ответ.


p.s. надеюсь, вопрос не потеряется в давно не поднимаемой теме.

Кухарь

Цитата: Mavn от 27 января 2009, 13:33:23
Ну у меня совсем маленький :) без поисковых индексов 45-55 мегов с поисковыми не более 100 мегов. Просто имеется опыт работы с базами smf более 20 гигов :)

Можете привести примерчик такого форума, интересно посмотреть.

Mihanja80

Цитата: Mavn от 28 января 2009, 13:41:06Кстати на самом деле не только особо большие таблицы нужно переводить в InnoDB :) есть некоторые нюансы :)

Я уже процентов 10 вашего форума перечитал, и еще буду читать, но что-то часто встречаю эти нюансы без разъяснения...
Вот как раз сижу и перевожу таблицы в InnoDB...
Может подскажете чего ожидать (где почитать), о нюансах?