![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Медленно работает LIKE [D7, FireBird 1.5]
galexis © (2006-06-22 10:28:00)Используется запрос типа select * from Table Where (Fld1 LIKE '%' || 'Text' || '%')
Данные Fld1 (тип VarChar длина 1000) состоят из нескольких слов (наименовние предприятий).
Так вот. Ищу, например, "Горьковский автомобильный завод" по одному слову "автомобильный". Запрос выполняется меньше секунды. Пытаюсь провести поиск по неполному слову, например, "горьковск" - и тут все, поиск идет минут 20.
Чего бы это?
galexis (2006-06-23 11:40:00) [1]select NAMEP from UL_NAME Where ( UPPER(NAMEP) LIKE '%' || 'ЭЛЕКТРИЧЕСКАЯ' || '%')
Точно не уверен, но по моему все же || виноваты. Без них по моему работает.
Виталий Панасенко (2006-06-23 11:32:00) [2]select * from tester
where dataf1 like "%^_1_" escape "^" - первый раз 2 минуты. остальные разы 3-5 секунд. даже замена маски поиска производительность не ухудшала.
В таблице более 200000 записей. длина поля - 100, кодировка БД - NONE. Значение в поле типа
"11111111111111111111111111111_1",
"11111111111111111111111111111_2"
...
"11111111111111111111111111111_200000"
но встречаются и другие типа Right, Left, ib_odbc, Проба.
План
PLAN (TESTER NATURAL)
Адаптированный план
PLAN (TESTER NATURAL)
------ Performance info ------
Prepare time = 16ms
Execute time = 4s 125ms
Avg fetch time = 179,35 ms
Current memory = 744 120
Max memory = 944 368
Memory buffers = 2 048
Reads from disk to cache = 33 320
Writes from cache to disk = 6
Fetches from cache = 467 034
Размер страницы - 8194, машина - Пень-3/700(да, да !:-)) 256 ОЗУ. SCSI.
FireBird 1.5
Danilka (2006-06-23 11:18:00) [3]не понимаю, как размер страницы, так сильно может влиять на разницу в скорости выполнения запросов "%я электрическая компания%" и "% электрическая компания%"?
для исключения варианта [46], может имеет смысл поискать абракадабру, например "% вапмавпиыапьорвапп%", будет отрабатывать минуты или секунды?
Sergey13 (2006-06-23 10:46:00) [4]> [82] galexis (23.06.06 10:37)
Сервер читает не строками и не столбцами. Он читает кусками - кластерами (на физическом уровне - это относится к ОС) и страницами на логическом уровне. Поэтому желательно, что бы логический кусок (страница) был равен или кратен физическому (кластеру диска).
Johnmen (2006-06-23 10:44:00) [5]более доступным языком
http://www.ibase.ru/ibfaq.htm#pagesize
http://www.ibase.ru/devinfo/ibfaq.htm#1.41
Johnmen (2006-06-23 10:41:00) [6]http://www.ibase.ru/devinfo/pagesize.htm
galexis (2006-06-23 10:37:00) [7]
> Sergey13 © (23.06.06 10:28) [81]
Это понятно, что куски, а какие куски? Поле таблицы? Или Строка таблицы?
Т.е., если, например размер страницы 1024 (байт?, Кб?), а строка получилась 1240, то она располагается в двух "кусках" по 1024. Тогда если увеличить размер страницы до 2048, строка поместится целиком, отсюда быстрее чтение и соответственно поиск. Так что ли?
Sergey13 (2006-06-23 10:28:00) [8]> [78] galexis (23.06.06 10:18)
> На что влияет размер страницы?
Это куски, которыми хранится и читается информация.
galexis (2006-06-23 10:26:00) [9]
> unknown © (23.06.06 10:23) [79]
ALEXIS_GR (Client) Fri Jun 16 14:31:00 2006
Guardian starting: C:\Program Files\Firebird\Firebird_1_5\bin\fbserver.exe
unknown (2006-06-23 10:23:00) [10]В firebird.log случайно ничего подозрительного не написано?
galexis (2006-06-23 10:18:00) [11]Локально тоже не работает :(. Все же в базе проблема.
На что влияет размер страницы?
galexis (2006-06-23 09:53:00) [12]Вообщем опять ничего не работает. Сейчас поставлю на локальный комп и потестирую.
galexis (2006-06-23 09:51:00) [13]
> atruhin ©
Конечно 4096, опечатка
sniknik (2006-06-22 18:09:00) [14]http://www.codenet.ru/db/interbase/Interbase-Not-Do.php
совет 6 (2кб мало)
Виталий Панасенко (2006-06-22 18:00:00) [15]У ЖарПтицы есть и 16384
atruhin (2006-06-22 17:49:00) [16]> Восстановил с 2096.
А почему такой размер? Обычно рекомендуют 4096 или 8192
galexis (2006-06-22 17:29:00) [17]Проанализировал. Врекомендация было восстановить базу из бэкапа с большим размером страницы. Восстановил с 2096. Вроде бы работает. Вот только и народ компы повыключал. Думаю может это сеть у нас перегружена?
unknown (2006-06-22 16:51:00) [18]И анализ бд сюда по возможности выложи.
unknown (2006-06-22 16:49:00) [19]
> galexis (22.06.06 16:41) [67]
Как вариант - скачай ibanalyst http://www.ibase.ru/download/ibanalyst_r.zip
И посмотри анализ бд. Скорее всего ненужные индексы есть
и время от времени оптимизатор пропускает их в план.
galexis (2006-06-22 16:48:00) [20]Эксперт. Сервер на сервере. Даже на двух. И на том и на другом база себя одинаково ведет. Уж и антивирусник вырубил.