Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
ВнизDeadlock при запросе на выборку в программе без явных блокировок Найти похожие ветки
← →
И. Павел © (2011-08-25 15:36) [0]Здравствуйте.
В программе не пользуюсь блокировками (кроме тех, которые возникают автоматически). Тем более никогда не делал блокировки на чтение таблицы со списком пользователей.
Но при этом в программе несколько раз возникла ошибка:Transaction (Process ID 193) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.
Эта ошибка возникает при запросах вида:SELECT id, ItemID, SysNum, IsNew FROM USERLIST.dbo.MonMes WHERE MesType = 5 AND IDMonUsers = 472 ORDER BY ItemID ASC
Таблица MonMes используется очень часто. В нее постоянно что-то пишется или обновляются какие-нибудь записи. Подскажите, пожалуйста, может ли этот deadlock быть следствием стандартных блокировок при INSERT/UPDATE? Или все же что-то поставило блокировку на чтение на талицу MonMes?
PS: СУБД - MS SQL SERVER 2005.
← →
Вариант (2011-08-25 15:40) [1]Может
← →
И. Павел © (2011-08-25 16:26) [2]> [1] Вариант (25.08.11 15:40)
Ясно. Спасибо. Стараюсь не использовать явных блокировок в программах, но они, похоже, и не нуждаются в приглашении :)
← →
Sergey13 © (2011-08-25 16:36) [3]> [2] И. Павел © (25.08.11 16:26)
А разве в скуле select без nolock не блокирует записи?
← →
И. Павел © (2011-08-25 16:50) [4]> А разве в скуле select без nolock не блокирует записи?
Во время SELECT используется блокировка типа Shared. Но "Shared (S) locks allow concurrent transactions to read (SELECT) a resource". Поэтому пара SELECT должна выполняться не мешая друг другу.
← →
И. Павел © (2011-08-25 16:55) [5]Все, кажется разобрался.
Во время UPDATE при изменении данных возникает "lock conversion to an exclusive (X) lock".
А Exclusive может блокировать даже попытки чтения:
Exclusive (X) locks prevent access to a resource by concurrent transactions. No other transactions can read or modify data locked with an exclusive (X) lock.
Видимо, SELECT пришелся на UPDATE и из-за того, что UPDATE возникают почти без остановки, не смог через них пробиться.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c