Блокировки MSSQL

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Блокировки MSSQL

Сообщение vg »

Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Re: Блокировки MSSQL

Сообщение Leo Gan »

vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Я не особый спец, но у меня так было:
Одна и таже SP запускалась многократно практически одновременно. Влетал непредсказуемо в дедлоки.
Насколько разобрался, сервер сначала ставит как бы промежуточную блокировку, которую потом переводит в номальную, на запись. Несколько промежуточных блокировок + одна на запись, которая не идет из-а других промежуточных одновременно и вызывают дедлок.
Борюсь с этим, выставляя сразу эксклюзивный лок на таблицу до конца транзакции, что и подразумевалось неяно.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Блокировки MSSQL

Сообщение папа Карло »

vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
пример того как селект блокирует сам себя в студию!

как один селект блокирует другой селект... через хинты выстляешь лок более высокого уровня и все..... вариантов мильен....
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Блокировки MSSQL

Сообщение папа Карло »

Leo Gan писал(а):
vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Я не особый спец, но у меня так было:
Одна и таже SP запускалась многократно практически одновременно. Влетал непредсказуемо в дедлоки.
Насколько разобрался, сервер сначала ставит как бы промежуточную блокировку, которую потом переводит в номальную, на запись. Несколько промежуточных блокировок + одна на запись, которая не идет из-а других промежуточных одновременно и вызывают дедлок.
Борюсь с этим, выставляя сразу эксклюзивный лок на таблицу до конца транзакции, что и подразумевалось неяно.
код надо грамотно писАть и дедлоки будут очень и очень редко....

СП например делает селект, апдейт примерно тогоже сета.... если хинт правильно на первом селекте не выставил пто вот тебе и дедлок. эксклюзивный лок ставить не не стОит... пришли мне код СПшки в ЛС, посмотрю может без него обойдешься ;)
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Re: Блокировки MSSQL

Сообщение Leo Gan »

папа Карло писал(а):
vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
пример того как селект блокирует сам себя в студию!

как один селект блокирует другой селект... через хинты выстляешь лок более высокого уровня и все..... вариантов мильен....
проблема в том, что SP запускается практически одновременно во многих экземплярах (BizTalk сообщения свои параллельно обрабатывает, вот он эту SP мне и запускает). Код пришлю на экспертизу, спасибо заранее. С меня причитается
Stranger
Пользователь
Сообщения: 155
Зарегистрирован: 06 май 2006, 11:44

Re: Блокировки MSSQL

Сообщение Stranger »

папа Карло писал(а): пример того как селект блокирует сам себя в студию!
http://support.microsoft.com/default.aspx/kb/906344
http://support.microsoft.com/kb/821740
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Блокировки MSSQL

Сообщение папа Карло »

Stranger писал(а):
папа Карло писал(а): пример того как селект блокирует сам себя в студию!
http://support.microsoft.com/default.aspx/kb/906344
http://support.microsoft.com/kb/821740
это известная фишка 2000. вопрос в том что оно отваливается из-за этого.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: Блокировки MSSQL

Сообщение vg »

Stranger писал(а):
папа Карло писал(а): пример того как селект блокирует сам себя в студию!
http://support.microsoft.com/default.aspx/kb/906344
http://support.microsoft.com/kb/821740
Спасибо.
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

sql

Сообщение Yuri Dimant »

Уважаемыи vg. К сожалению полностью блокировок не избежать, однако их можно/нужно минимизировать.SELECT держут Locks только пока считыватеся дата, а не на протяжение всеи трансакции.

Возьми этот SELECT и попытаися его оптимизировать, посмотри или оптимазер использует индехы , какие параметры в WHERE условии и т.д
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: sql

Сообщение vg »

Yuri Dimant писал(а):Уважаемыи vg. К сожалению полностью блокировок не избежать, однако их можно/нужно минимизировать.SELECT держут Locks только пока считыватеся дата, а не на протяжение всеи трансакции.

Возьми этот SELECT и попытаися его оптимизировать, посмотри или оптимазер использует индехы , какие параметры в WHERE условии и т.д
Это ясно. Побочный эффект - другие юзеры пости не могут с базой работать. Загрузка СПЮ - 0. Просто всё колом становится. Если так буде продолжаться, скорее начальство попросит ту апликацию посмотреть (там писано на ВБА для экселя 2003).
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Re: Блокировки MSSQL

Сообщение Leo Gan »

папа Карло писал(а):
Leo Gan писал(а):
vg писал(а):Есть, вероятно, кривые апликации. Один и тотже PID блокирует сам себя (select), иногда другой PID (другого юзера и проиложения). Как селект может блокровать другой селект?
Я не особый спец, но у меня так было:
Одна и таже SP запускалась многократно практически одновременно. Влетал непредсказуемо в дедлоки.
Насколько разобрался, сервер сначала ставит как бы промежуточную блокировку, которую потом переводит в номальную, на запись. Несколько промежуточных блокировок + одна на запись, которая не идет из-а других промежуточных одновременно и вызывают дедлок.
Борюсь с этим, выставляя сразу эксклюзивный лок на таблицу до конца транзакции, что и подразумевалось неяно.
код надо грамотно писАть и дедлоки будут очень и очень редко....

СП например делает селект, апдейт примерно тогоже сета.... если хинт правильно на первом селекте не выставил пто вот тебе и дедлок. эксклюзивный лок ставить не не стОит... пришли мне код СПшки в ЛС, посмотрю может без него обойдешься ;)
папа, спасибо за помощь!!! Респект!
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

sql

Сообщение Yuri Dimant »

Уважаемыи vg, будьте pro-active и быстренько лезьте в аппликацию оптимизировать код
Ответить