Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.008 c
4-1242382646
Игорь
2009-05-15 14:17
2011.12.11
Функция IsProcessInJob в Windows 2000


2-1314743749
Lamer6666
2011-08-31 02:35
2011.12.11
IdHttp.Post и точка


15-1313841147
Leon-Z
2011-08-20 15:52
2011.12.11
Каретка Windows.


2-1314597578
petvv
2011-08-29 09:59
2011.12.11
Вызвать функцию exe из dll


2-1314513211
Егорка
2011-08-28 10:33
2011.12.11
Все файлы в папке и подпопках?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский