|
MySQL.RU - Webboard
Вернуться
как увеличить быстродействие (Alecs) 13/03/2007 - 15:28:45
Re: как увеличить быстродействие (godgive) 13/03/2007 - 17:37:23
Re: как увеличить быстродействие (Alecs) 14/03/2007 - 09:39:47
Re: как увеличить быстродействие (godgive) 14/03/2007 - 13:26:24
Re: как увеличить быстродействие (bac) 14/03/2007 - 23:39:12
Re: как увеличить быстродействие (ho.od.ua) 16/05/2007 - 06:44:07
> Original message text:
> From: Alecs - 13/03/2007 - 15:28:45
> Subject:как увеличить быстродействие
> -----------------
> Здраствуйте!
>
> В администрируемой мной БД, очень критична скорость выборки данных. В таблице более 500000 наименований, но весит она менее 1М. Юзают ее примерно раз в минуту, причем только на чтение. Можно ли таблицу постоянно держать в оперативной памяти. И как это сделать?
>
From: ho.od.ua - 16/05/2007 - 06:44:07
Subject:как увеличить быстродействие
-----------------
На самом деле выход совсем иной.
Смотри, если ты ищешь, как я понял, по текстовому полю, то в любом случае я так понимаю ты делаешь что то типа:
Select * from mytable where text like "%ищу%"
В таком случае MySQL приходится просматривать все записи на соответствующий шаблон, что и занимает время.
Чтобы сделать поиск быстрее, попробуй:
1) Создаешь таблицу абсолютно всех уникальных слов и указанием, в какой записе это слово встречается, можно даже сколько раз для каждой уникальной записи (таблица индекса слов)
2) Поисковый запрос разбиваешь на отдельные слова, и по каждому слову ищешь соответствия. То есть ты найдешь по такой идеалогии записи, в котором слова встречаются все, почти все.... только одно.
3) Ты можешь сортировать результат по количеству слов найденных в записи, и даже их частоте
А таблица индекса слов заполняется какой-либо процедурой с определенной периодичностью - если БД изменяется. Суть процедуры - сделать выборку абсолютно всех записей и разнести соответствующие найденные слова по таблице, можно с указанием даже сколько раз где встречается.
Это сложно, конечно, но другого способа существенно увеличить быстродействие с полнотекстовым поиском по видимому и не существует.
А насчет хранить в оперативной памяти, организовать можно с помощью типа таблиц, не помню как называется, но хранится в оперативной памяти и при перезагрузке ей кирдык. То есть можно сделать так: при загрузке ОС автоматически загружать таблицу в память с диска.
Если в базу вносятся изменения, то тогда следует ее из Опер. памяти сохранить на диск, то есть сделать обычным типом
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
31543
|
|