![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Производительность [IB6.x]
xayam © (2007-10-08 16:06:00)Решил тут недавно написать небольшой поисковичек для делфимастера по старым веткам незнаю че то интересно стало, написал загрузчик из xml'я в бд благо с 2004 года ветки в xml'е сохраняют)) Но возникли некоторые проблемы с производительностью, ищет медленно.
вот основной запрос на поиск
http://xayam.by.ru/Images/db2.gif
Хотя я думаю дело не в запросе. А в параметрах бд: кеш, sweep interval, размер страницы, индексы. Так вот какую совокупность этих параметров можно считать оптимальной? Есть ли какие-то другие способы увеличения производительности? Что посоветуете
Desdechado (2007-10-08 17:11:00) [21]> да это тоже плохо
Уже успел попробовать?
Desdechado (2007-10-08 17:10:00) [22]> Sergey13 © (08.10.07 16:37) [7]
Да, страница должна быть равна или вмещать целое число кластеров. Тогда не будет "холостых чтений" диска.
И чем больше размер страницы, тем меньше глубина индекса на большой таблице. При глубине >3 возникают заметные тормоза.
xayam (2007-10-08 17:07:00) [23]
> Desdechado © (08.10.07 16:32) [4]
> Например, можно разбить текст на слова, соотнести слова
> с постом, проиндексировать таблицу слов и искать по ним.
> Но здесь тоже не очень удобно, т.к. только целые слова
> и только в тех формах, какие есть в тексте
да это тоже плохо
Sergey13 (2007-10-08 16:50:00) [24]> [9] xayam © (08.10.07 16:40)
Есть поиск и есть поиск. Одно дело искать по like UPPER('%ччч%') и другое дело поиск по индексу. Инвалидная коляска и феррари.
xayam (2007-10-08 16:40:00) [25]
> Sergey13 © (08.10.07 16:38) [8]
> > записей ищет достаточно быстро
> Такой же запрос?
незнаю, я там не админю))
Sergey13 (2007-10-08 16:38:00) [26]> [6] xayam © (08.10.07 16:36)
> это понятно, хотя вот у меня на работе бд несколько миллионов
> записей ищет достаточно быстро
Такой же запрос?
Sergey13 (2007-10-08 16:37:00) [27]> [5] Desdechado © (08.10.07 16:34)
Вроде размер страницы (желательно) должен соответствовать (или быть кратным) размеру кластера на диске.
xayam (2007-10-08 16:36:00) [28]
> Sergey13 © (08.10.07 16:15) [3]
> > [2] xayam © (08.10.07 16:12)
> А других вариантов и нет по большому счету. Запрос по поиску
> подстроки по любому затратная штука.
это понятно, хотя вот у меня на работе бд несколько миллионов записей ищет достаточно быстро, правда там Sql Server, а тут записей на порядок меньше и такие тормоза ((
Desdechado (2007-10-08 16:34:00) [29]Кстати
в параметрах бд: кеш, sweep interval, размер страницы, индексы
размер страницы действительно влияет на скорость чтения данных и работы с индесками. Меньше 4 кб ставить не рекомендую.
Desdechado (2007-10-08 16:32:00) [30]Есть и другие варианты, но в FB их нужно делать руками, тогда как в других СУБД часто есть встроенные механизмы.
Например, можно разбить текст на слова, соотнести слова с постом, проиндексировать таблицу слов и искать по ним. Но здесь тоже не очень удобно, т.к. только целые слова и только в тех формах, какие есть в тексте. Но уже лучше, чем простой LIKE.
Sergey13 (2007-10-08 16:15:00) [31]> [2] xayam © (08.10.07 16:12)
А других вариантов и нет по большому счету. Запрос по поиску подстроки по любому затратная штука.
xayam (2007-10-08 16:12:00) [32]
> При запросе с Like '%xxx%'
хм... а как же по-другому, не очень хорошо знаю sql, но прочитав одну книгу Гроффа других вариантов не нашел
Sergey13 (2007-10-08 16:10:00) [33]> [0] xayam © (08.10.07 16:06)
> Хотя я думаю дело не в запросе.
Ошибаешься. Как раз в нем. При запросе с Like '%xxx%' не используется инедекс и идет полное сканирование таблицы.