Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31543



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |