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