Наткнулся на странную проблему
W2K3 SP1, Firebird 1.5.3 суперсервер
В базе ведется история действий
пользователей. Таблица с историй
растет быстро и много. Поэтому
появилась идея из основной базы
переносить старые данные истории в
другую, оставляя только последние пару
месяцев.
Написал программу - выбрать старые
данные, вставить  их в другую базу,
затем удалить из исходной и select count(*) по
ней для сборки мусора.
На одном компе работает с постоянной
скоростью, все переносит за час. На
другом - 8 часов. При этом периодически
впадает в такое состояние: программа
ждет выполнения запроса выполняющего
Insert, а FB не потребляет CPU, не читает и не
пишет на диск. Это длится ровно 1
минуту, затем начинает переносить
данные дальше, снова виснет, итд.
Программа переноса запущена на том же
компе, что и FB.
Если эту же программу запустить на
другом компьютере, а базы оставить на
том же - начинает устойчиво переносить
данные без подвисаний.

Смотрел во внутренности подвисшего FB с
помощью windbg - большинство потоков
чего-то ждет в WaitFor...

Reply via email to