Прошу помощи!!!

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
Leon
Сообщения: 24
Зарегистрирован: 22 мар 2005, 13:39

Прошу помощи!!!

Сообщение Leon » 22 мар 2005, 13:58

Недавно перешли с IB5.6 на 7.01(BackUp -> Restore). Вылезла большая проблемма.
Запрос (достаточно частый), конечно, не очень хороший, на на 5.6 отрабатывал нормально... В 7-ке сервак от таких запросов просто умирает!
SELECT COUNT(*) FROM MY_TABLE
WHERE
AND PRIZNAK=2 AND FAM LIKE '%QWERTY%'

В таблице всего ~ 700000 записей, по индексу в поле признак находится ~ 20000 записей, кот. потом перебираются. План запроса показывается нормальный( PLAN (MY_TABLE INDEX (MY_TABLE_PRIZNAK)) ).
В 5.6 это выполнялось несколько секунд, сейчас минута и более. Через несколько часов работы, сервер запускает около 50 потоков и ни на что не реагирует. Перезагрузка помогает не надолго.
Что делать? Запрос поменять сейчас нет возможности.
Где, что подкрутить?
Это какая то особенность IB7.0?

eugeney
Сообщения: 79
Зарегистрирован: 29 окт 2004, 18:51

Re: Прошу помощи!!!

Сообщение eugeney » 22 мар 2005, 15:25

Leon писал(а):Недавно перешли с IB5.6 на 7.01(BackUp -> Restore). Вылезла большая проблемма.
Запрос (достаточно частый), конечно, не очень хороший, на на 5.6 отрабатывал нормально... В 7-ке сервак от таких запросов просто умирает!
SELECT COUNT(*) FROM MY_TABLE
WHERE
AND PRIZNAK=2 AND FAM LIKE '%QWERTY%'

В таблице всего ~ 700000 записей, по индексу в поле признак находится ~ 20000 записей, кот. потом перебираются. План запроса показывается нормальный( PLAN (MY_TABLE INDEX (MY_TABLE_PRIZNAK)) ).
В 5.6 это выполнялось несколько секунд, сейчас минута и более. Через несколько часов работы, сервер запускает около 50 потоков и ни на что не реагирует. Перезагрузка помогает не надолго.
Что делать? Запрос поменять сейчас нет возможности.
Где, что подкрутить?
Это какая то особенность IB7.0?
IBAnalyzer пробовал? Что говорит про индекс.
Записи удаления из таблици есть ? Возможно в этот момент происходит сборка мусора.

Leon
Сообщения: 24
Зарегистрирован: 22 мар 2005, 13:39

Сообщение Leon » 22 мар 2005, 15:44

Индекс по полю PRIZNAK - плохой, в поле всего 2 разных зачения(1 или 2), но он используется только для этого запроса.
Почему на 5.6 работало, а в 7.0 нет? Грузит 4-ре проца сервера на 100%(из 400% возможных), а выполняется намного дольше с тем же планом. Такое ощущение, что поддержка SMP во вред пошла, или в оптимизаторе чего-то накрутили.
Таблица - чистая(недавно было RESTORE). sweep interval=0.

Вообще, 7-ка ведет себя как-то непонятно под нагрузкой.
По процам вроде нормально все разбрасывается. Но временами идет
непонятная 100% загрузка(не sweep), сжирается памаять, запускается куча доп. потоков. Не понимаю...

eugeney
Сообщения: 79
Зарегистрирован: 29 окт 2004, 18:51

Сообщение eugeney » 22 мар 2005, 16:31

Leon писал(а):Индекс по полю PRIZNAK - плохой, в поле всего 2 разных зачения(1 или 2), но он используется только для этого запроса.
Почему на 5.6 работало, а в 7.0 нет? Грузит 4-ре проца сервера на 100%(из 400% возможных), а выполняется намного дольше с тем же планом. Такое ощущение, что поддержка SMP во вред пошла, или в оптимизаторе чего-то накрутили.
Таблица - чистая(недавно было RESTORE). sweep interval=0.
Деактивируй индекс. Попробуй в IBExpert что он скажет по поводу чтений страниц и т.д.
Отключи hiperthread в процессорах.
Leon писал(а): Вообще, 7-ка ведет себя как-то непонятно под нагрузкой.
Не понимаю...
Нормально она ведед. Попробуй FB классик как он будет себя вести.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 23 мар 2005, 13:35

Такая проблема была из-за hiperthread в процессорах. Либо отключить, либо прейти на 7.1 sp2

Leon
Сообщения: 24
Зарегистрирован: 22 мар 2005, 13:39

Сообщение Leon » 24 мар 2005, 10:04

SELECT COUNT(*) FROM MY_TABLE
WHERE PRIZNAK=2 AND FAM LIKE '%QWERTY%'

Plan
PLAN (MY_TABLE INDEX (MY_TABLE_PRIZNAK))
Adapted Plan
PLAN (MY_TABLE INDEX (MY_TABLE_PRIZNAK))
------ Performance info ------
Prepare time = 0ms
Execute time = 2s 203ms
Current memory = 86 264 790
Max memory = 86 409 286
Memory buffers = 10 000
Reads from disk to cache = 16 142
Writes from cache to disk = 0
Fetches from cache = 44 964


Plan
PLAN (MY_TABLE NATURAL)
Adapted Plan
PLAN (MY_TABLE NATURAL)
------ Performance info ------
Prepare time = 0ms
Execute time = 33s 969ms
Current memory = 84 227 030
Max memory = 86 409 286
Memory buffers = 10 000
Reads from disk to cache = 57 365
Writes from cache to disk = 0
Fetches from cache = 1 701 455

Но на 5.6 были такие же планы... Проблем не было.
Hiperthread - отключен.
Мне кажется, что часто сервак подгружает Collector(стало чуть полегче после установки SWEEP_QUANTUM = 10). А как этот процесс работает? Где можно поподробней прочитать?

Leon
Сообщения: 24
Зарегистрирован: 22 мар 2005, 13:39

Сообщение Leon » 24 мар 2005, 12:04

У меня на сервере крутится Win2000 Advanced Srv. (SP4)
В BOOT.INI есть ключик /PAE, чтоб сервер 6Гб памяти сжирал. Могут быть из за этого проблеммы у InterBase 7.0 ?

HYPERTHREAD - отключен в BIOS. А в виндах ни чего не надо по этому поводу запрещать?

Ответить