Процедура тормозит

Запросы, планы, оптимизация запросов, ...

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

Ответить
nevadimka
Сообщения: 51
Зарегистрирован: 04 мар 2008, 10:33

Процедура тормозит

Сообщение nevadimka » 05 фев 2009, 13:28

И так может кто-то сталкивался или объяснит в чем проблема.

ФБ 1.5.3 Классик
ОЗУ - 16ГБ + 8Гб свап
БД > 200Гб
ОС Linux RedHat 2.6.9

Есть процедура, которая берет исходные данные с одной таблицы,
подтягивает некоторые параметры из других и результат вставляет в другую таблицу, удаляя исходные данные из первой.

Если взять ребутнуть сервер, то при обратотке 1000 оперций fetched from cash = порядка 7000-20000,
и процедура обрабатывает порядка 120-150 операций в секунду.

Если после продолжительной работы опять запустить процедуру то на 1000 операций приходить 20 000 000 - 40 000 000 fetched from cash,
и процедура обрабатывает 30-70 оперций в секунду, может упасть и меньше 1 оп/сек

Может кто-то подскажет куда копать, а то я пока думаю сменить ядро ОС на 2.6.18 и выше дабы чистить кеш или перейти на ФБ2.х.х

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Процедура тормозит

Сообщение dimitr » 05 фев 2009, 14:49

Читай на ibase.ru про сборку мусора. У тебя он копится в исходной таблице, следующая операция начинает его чистить.

nevadimka
Сообщения: 51
Зарегистрирован: 04 мар 2008, 10:33

Re: Процедура тормозит

Сообщение nevadimka » 09 фев 2009, 18:42

Спасибо за ответ. Будем надеяться что проблема в этом.
Только уточните парочку нюансов.
Вот в этой статье http://www.ibase.ru/devinfo/delmany.htm вижу что-то похожее:
С уникальным индексом С дубликатами
Elapsed time= 75.90 sec Elapsed time= 865.47 sec
Reads = 1694 Reads = 1814
Writes = 1499 Writes = 1732
Fetches = 225,541 Fetches = 2,540,593

То есть если у меня в таблице есть такой неуникальный индекс у которого больше чем 20к дубликатов, то так будет тормозить?
И на счет сборки мусора: хватит просто Select count(*) или всетаки нужно еще условия добавлять?

Ответить