Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.24;
Скачать: CL | DM;

Вниз

deadlock на MS SQL 2000   Найти похожие ветки 

 
Clickmaker ©   (2003-04-04 13:09) [0]

При выполнении запроса типа "update <table> set <field> = "строка" where Object_ID = <id>" с помощью TQuery (BDE 5.11) в одной таблице, но для разных записей из разных потоков (и разных сессии БДЕ) очень часто вылезает такая гадость "A deadlock was detected.
Transaction (Process ID 53) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.
General SQL error". Догадываюсь, что, судя по всему, 2 транзакции столкнулись лбами на одной таблице, но по идее блокировка не должна быть на всей таблице, а только на одной записи. Или я чего-то недопонимаю... Может кто решал такую задачку, подскажите, где грабли: БДЕ, MS SQL...


 
stone ©   (2003-04-04 13:56) [1]


> MS SQL

Но это может произойти только для одной записи из разных потоков. В твоем случае смотри уровень изоляции транзакций.


 
Clickmaker ©   (2003-04-04 14:04) [2]

Да на этот момент у меня уровень READ UNCOMMITTED. Но есть подозрение, что если явно не обернуть update в транзакцию, то сервер стартует неявную глобальную транзакцию, которая монопольно блокирует таблицу в диапазоне индекса, если where в update по индексному полю. Или я ошибаюсь?


 
stone ©   (2003-04-04 14:09) [3]


> если явно не обернуть update в транзакцию, то сервер стартует
> неявную глобальную транзакцию

Не скажу на счет глобальной, но неявная транзакция естественно стартуется.



Страницы: 1 вся ветка

Текущий архив: 2003.04.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
6-77071
Lamer XP
2003-02-25 18:03
2003.04.24
Sockets


14-77097
Vlad Oshin
2003-04-07 10:52
2003.04.24
Нужна таблица кодов писка компа, когда он не грузится


1-76962
spogi
2003-04-06 03:12
2003.04.24
Form without Form in uses


3-76782
Жук
2003-04-04 16:35
2003.04.24
Разбивка поля numeric по разрядам


14-77151
Pitay
2003-04-06 21:28
2003.04.24
Эмитация нажатия кнопки