Блокировки MSSQL
Добавлено: 22 мар 2007, 17:12
Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Я не особый спец, но у меня так было:vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
пример того как селект блокирует сам себя в студию!vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
код надо грамотно писАть и дедлоки будут очень и очень редко....Leo Gan писал(а):Я не особый спец, но у меня так было:vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Одна и таже SP запускалась многократно практически одновременно. Влетал непредсказуемо в дедлоки.
Насколько разобрался, сервер сначала ставит как бы промежуточную блокировку, которую потом переводит в номальную, на запись. Несколько промежуточных блокировок + одна на запись, которая не идет из-а других промежуточных одновременно и вызывают дедлок.
Борюсь с этим, выставляя сразу эксклюзивный лок на таблицу до конца транзакции, что и подразумевалось неяно.
проблема в том, что SP запускается практически одновременно во многих экземплярах (BizTalk сообщения свои параллельно обрабатывает, вот он эту SP мне и запускает). Код пришлю на экспертизу, спасибо заранее. С меня причитаетсяпапа Карло писал(а):пример того как селект блокирует сам себя в студию!vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
как один селект блокирует другой селект... через хинты выстляешь лок более высокого уровня и все..... вариантов мильен....
http://support.microsoft.com/default.aspx/kb/906344папа Карло писал(а): пример того как селект блокирует сам себя в студию!
это известная фишка 2000. вопрос в том что оно отваливается из-за этого.Stranger писал(а):http://support.microsoft.com/default.aspx/kb/906344папа Карло писал(а): пример того как селект блокирует сам себя в студию!
http://support.microsoft.com/kb/821740
Спасибо.Stranger писал(а):http://support.microsoft.com/default.aspx/kb/906344папа Карло писал(а): пример того как селект блокирует сам себя в студию!
http://support.microsoft.com/kb/821740
Это ясно. Побочный эффект - другие юзеры пости не могут с базой работать. Загрузка СПЮ - 0. Просто всё колом становится. Если так буде продолжаться, скорее начальство попросит ту апликацию посмотреть (там писано на ВБА для экселя 2003).Yuri Dimant писал(а):Уважаемыи vg. К сожалению полностью блокировок не избежать, однако их можно/нужно минимизировать.SELECT держут Locks только пока считыватеся дата, а не на протяжение всеи трансакции.
Возьми этот SELECT и попытаися его оптимизировать, посмотри или оптимазер использует индехы , какие параметры в WHERE условии и т.д
папа, спасибо за помощь!!! Респект!папа Карло писал(а):код надо грамотно писАть и дедлоки будут очень и очень редко....Leo Gan писал(а):Я не особый спец, но у меня так было:vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Одна и таже SP запускалась многократно практически одновременно. Влетал непредсказуемо в дедлоки.
Насколько разобрался, сервер сначала ставит как бы промежуточную блокировку, которую потом переводит в номальную, на запись. Несколько промежуточных блокировок + одна на запись, которая не идет из-а других промежуточных одновременно и вызывают дедлок.
Борюсь с этим, выставляя сразу эксклюзивный лок на таблицу до конца транзакции, что и подразумевалось неяно.
СП например делает селект, апдейт примерно тогоже сета.... если хинт правильно на первом селекте не выставил пто вот тебе и дедлок. эксклюзивный лок ставить не не стОит... пришли мне код СПшки в ЛС, посмотрю может без него обойдешься