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