Быстродействие работы огромной БД MySQL

  • Автор темы Автор темы spad
  • Дата начала Дата начала

spad

Новичок
Быстродействие работы огромной БД MySQL

Приветствую. Расскажите мне пожалуйста о быстродействии MySQL.

А конкретно интересует следующее: предполагается сделать MySQL базу в 300 000 - 500 000 записей. Таблица имеет два стобца: id(ключ) и text_field(5-10кб текста). Увидев размер каждой записи и количества записей, сразу можно сказать, что объем базы будет очень большой. Как быстро будет выполнять запрос "SELECT * FROM `database` WHERE text_field like '%какой-то текст для запроса%' " ?

Сам я предполагаю, что без индекса по text_field запрос будет обрабатываться очень долго. Даже не могу предположить насколько долго. А если сделать индекс по text_field, то как быстро будет выполняться запрос?

Если речь идет о милли-микросекундах, то гуд, а иначе мне надо придумать способ быстрого получения определенных данных из таких баз.
 
like '% - при таком запросе индекс не будет использоваться, хоть обсоздавайся.
 
А как тогда поступить тогда мне? Мне нужно подсчитывать количество записей в бд, в text_field которых встречается заданная фраза.
 
Сдается мне, тут в консерватории надо править.

И форма задания вопроса убивает, конечно.
то ли это обычный полнотекстовый поиск, то ли текстовое поле используется не по назначения.

spad, ты можешь ВНЯТНО написать, что за поля, что за тексты, что за фразы?
 
spad для больших проектов надо разрабатывать отдельную индексную систему, иначе все будет тормозить и тупить, поиск дело сложное ))))
 
Поля 2: id и text_field, в котором будут хранится тексты разного содержания(новости, статьи, обзоры)

Я занимаюсь кое-какими экспериментами с языком и мне надо для заданных фраз(словосочетания из 2-3х слов) получать количество их вхождений во всю базу, причем без учета морфологии, то есть строго задал словосочетание, четко получил число, сколько раз оно встречается в базе.

Кроме как like '%словосочетание%' я не вижу решения.
Проблема появится в скорости обработки такого запроса.

Это даже не поисковик, а всего лишь скрипт, который дальше моего компа не уйдет.
 
Автор оригинала: berkut
а к чему тогда заморочки с производительностью?
А реально ли выполнить с сотню тысяч запросов за пару часов при таком запросе в такую базу? Если реально, то проблем нет, но если кажыдй запрос будет идти хотя бы по секунде, то это уже более суток работы, что неприемлимо для меня.

Gas, спасибо, сейчас буду разбираться.
 
http://www.sphinxsearch.com
кстати кто-нибуть пробовал в продакшон с mysql + innodb?
 
Автор оригинала: spad
Поля 2: id и text_field, в котором будут хранится тексты разного содержания(новости, статьи, обзоры)

Я занимаюсь кое-какими экспериментами с языком и мне надо для заданных фраз(словосочетания из 2-3х слов) получать количество их вхождений во всю базу, причем без учета морфологии, то есть строго задал словосочетание, четко получил число, сколько раз оно встречается в базе.

Кроме как like '%словосочетание%' я не вижу решения.
Проблема появится в скорости обработки такого запроса.

Это даже не поисковик, а всего лишь скрипт, который дальше моего компа не уйдет.
Не надо like.
Надо сделать банальный полный перебор базы скриптом, на лету считая нужные статистики.
 
nail
Кстати тоже вариант.
Для скорости можно ещё и в SP всю логику завернуть. Хотя вариант с использованием fulltext'а в случае небольшого количества результатов по каждой из искомых фраз может оказаться значительно быстрее (тоже в SP завернуть).
 
dr-sm
+1
была похожая ситуация , тесты в базе лежали , только sphinxsearch и спас
 
spad
Пробывал LIKE в MySQL по неиндексному полю VAR(512) из 1000 000 записей. Время запроса в среднем 2 сек, на пентиуме 2Gz. Если поставит InnoDB, время запроса в среднем 5 сек. Ты ведь и сам можешь попробывать, нагенери строк и через ab засекай время.

То что ты описал ни одна БД быстро не переварит. Надо менять подход к задаче.
 
MaxiStyle
Очень умное замечание. Лучше сходи в макдак.
 
Сверху