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

spad

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

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

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

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

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

berkut

Новичок
like '% - при таком запросе индекс не будет использоваться, хоть обсоздавайся.
 

spad

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

Фанат

oncle terrible
Команда форума
Сдается мне, тут в консерватории надо править.

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

spad, ты можешь ВНЯТНО написать, что за поля, что за тексты, что за фразы?
 

nirex

Новичок
spad для больших проектов надо разрабатывать отдельную индексную систему, иначе все будет тормозить и тупить, поиск дело сложное ))))
 

spad

Новичок
Поля 2: id и text_field, в котором будут хранится тексты разного содержания(новости, статьи, обзоры)

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

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

Это даже не поисковик, а всего лишь скрипт, который дальше моего компа не уйдет.
 

spad

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

Gas, спасибо, сейчас буду разбираться.
 

dr-sm

Новичок
http://www.sphinxsearch.com
кстати кто-нибуть пробовал в продакшон с mysql + innodb?
 

nail

Новичок
Автор оригинала: spad
Поля 2: id и text_field, в котором будут хранится тексты разного содержания(новости, статьи, обзоры)

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

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

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

Gas

может по одной?
nail
Кстати тоже вариант.
Для скорости можно ещё и в SP всю логику завернуть. Хотя вариант с использованием fulltext'а в случае небольшого количества результатов по каждой из искомых фраз может оказаться значительно быстрее (тоже в SP завернуть).
 

alexv

Новичок
dr-sm
+1
была похожая ситуация , тесты в базе лежали , только sphinxsearch и спас
 

MaxiStyle

Новичок
spad
Пробывал LIKE в MySQL по неиндексному полю VAR(512) из 1000 000 записей. Время запроса в среднем 2 сек, на пентиуме 2Gz. Если поставит InnoDB, время запроса в среднем 5 сек. Ты ведь и сам можешь попробывать, нагенери строк и через ab засекай время.

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

HraKK

Мудак
Команда форума
MaxiStyle
Очень умное замечание. Лучше сходи в макдак.
 
Сверху