Існує два режими обробки deadlock – wait та no wait (з очікуванням та без очікування). У BDE для будь-яких транзакцій IB використовується режим без очікування, і режим очікування можна встановити лише за прямої роботи з IB API (наприклад, через FreeIBComponents).
Як виникає deadlock?
Взаємне блокування (скорочено взаємоблокування, англ. deadlock) – ситуація в багатозадачному середовищі або СУБД, при якій декілька процесів перебувають у стані очікування ресурсів, зайнятих один одним, і жоден із них не може продовжувати своє виконання.
Які засоби допоможуть уникнути взаємних блокувань у транзакціях?
Робіть операції з вашими таблицями та рядками у фіксованому порядку. Тоді транзакції формуватимуть чергу і не відбуватиметься взаємоблокування. Додати хороші індекси на ваші таблиці. Тоді ваші запити скануватимуть менше індексних записів і, відповідно, встановлюватимуть менше блокувань.