Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
смотрел sp_who2

процесс 2 выполняет процедуру со множеством действий по 1 параметру
процесс 1 выполняет тупой селект из вьюхи с условием

sp_who2 показывает, что процесс 2 заблокирован процессом 1(селектом)

а потом за процессом 2 выстраивается очередь заблокированных им процессов

объясните кто разбирается - почему??
11 ноя 09, 13:33    [7913698]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mordred,

а в чем собственон вопрос? процесс2 навешал блокировок, после чего начал ждать, пока процесс1 свою блокировку снимет. пока он ждет - выстроилась очередь желающих поиметь ресурсы, заблокированные процессом2.
11 ноя 09, 13:36    [7913729]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
а какая блокировка может быть при селекте?(вроде разделяемая?и типа с чем она конфликтует?)
11 ноя 09, 13:38    [7913761]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
да, и процесс 1 выполняет все свои изменения не в рамках 1 транзакции
11 ноя 09, 13:40    [7913773]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred
а какая блокировка может быть при селекте?(вроде разделяемая?и типа с чем она конфликтует?)

Ну так вот и узнайте, с чем она конфликтует.
Таблица sysprocesses вам покажет
11 ноя 09, 13:41    [7913786]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mordred
а какая блокировка может быть при селекте?(вроде разделяемая?и типа с чем она конфликтует?)

с монопольной.
Mordred
да, и процесс 1 выполняет все свои изменения не в рамках 1 транзакции

и? значит блокировку держит текущая транзакция.
11 ноя 09, 13:44    [7913813]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
а разве sp_who2 не показывает, каким процессом в данное время заблокирован данный?
проблема в том, что я не пойму, как простой селект может что-то блокировать
11 ноя 09, 13:49    [7913887]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred
а разве sp_who2 не показывает, каким процессом в данное время заблокирован данный?
проблема в том, что я не пойму, как простой селект может что-то блокировать

Показывает. Только вам нужен не номер процесса, а имя ресурса, который заблокирован
11 ноя 09, 13:51    [7913904]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
Mordred
я не пойму, как простой селект может что-то блокировать

Может.
BOL
Shared Locks
Shared (S) locks allow concurrent transactions to read (SELECT) a resource. No other transactions can modify the data while shared (S) locks exist on the resource. Shared (S) locks on a resource are released as soon as the data has been read, unless the transaction isolation level is set to repeatable read or higher, or a locking hint is used to retain the shared (S) locks for the duration of the transaction.
11 ноя 09, 14:00    [7913998]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
to baracs

там read committed
11 ноя 09, 14:22    [7914188]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred


там read committed

А вы понимаете, что это означает, для другого коннекта, который пытаетеся изменить эти данные ?
11 ноя 09, 14:26    [7914229]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
ну типа решает проблему "грязного чтения"?

просто я пытался воспроизвести данную ситуацию(при исходных: read committed) у меня никакой блокировки не получается
11 ноя 09, 14:31    [7914297]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred


просто я пытался воспроизвести данную ситуацию(при исходных: read committed) у меня никакой блокировки не получается

И каким же способом вы воспроизводите данную ситуацию и проверяете наличие блокировок ?
11 ноя 09, 14:43    [7914451]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
через 2 подключения(1 делает селект 2 update той-же записи)
1.
set tran level...
begin tran
select
where field=value

2.
begin tran
update
where field=value
11 ноя 09, 14:47    [7914483]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred
через 2 подключения(1 делает селект 2 update той-же записи)
1.
set tran level...
begin tran
select
where field=value

2.
begin tran
update
where field=value

1. Эти запросы могут читать и обновлять разные записи
2. Как вы добились того, что update выполнялся именно в тот момент, когда работал(!) select ?
11 ноя 09, 14:50    [7914510]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
1. запись 1 - указана в условии
2. транзакцию в 1 подключении не завершил
11 ноя 09, 14:52    [7914533]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred
1. запись 1 - указана в условии
2. транзакцию в 1 подключении не завершил

И вы считатете, что в 1ом коннекте после окончания select сервер должен продолжать блокировать таблицу ?
11 ноя 09, 14:54    [7914548]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
Mordred
to baracs

там read committed

По русски:
"... Совмещаемые блокировки (S) ресурса снимаются по завершении операции считывания, если только уровень изоляции транзакции не установлен на Repeatable read или более высокий..."

Т.е. если у вас в соединении уровень изоляции - Read committed, то это не означает, что блокировки не устанавливаются. Они только быстрее снимаются.
11 ноя 09, 14:56    [7914559]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
ну если там поставить repeatable read
то update из 2 коннекта подвисает

давайте еще раз опишу проблему:
у нас довольно часто возникают подвисы системы(sql 2000)
в эти моменты sp_who2 показывает множественные блокировки(причем очень часто процесс № 1 блокирован процессом № 2 и куча других процессов заблокировано процессом №1)
вот собственно и пытаемся разобраться(написал процедуру, которая раз в 5 сек пишет мне блокировки + inputbuffer на каждую) - из результатов этой процедуры и возникли вопросы
может вообще ни оттуда копаем - так подскажите как решать данные проблемы
11 ноя 09, 15:02    [7914604]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred

давайте еще раз опишу проблему:
у нас довольно часто возникают подвисы системы(sql 2000)
в эти моменты sp_who2 показывает множественные блокировки(причем очень часто процесс № 1 блокирован процессом № 2 и куча других процессов заблокировано процессом №1)
вот собственно и пытаемся разобраться(написал процедуру, которая раз в 5 сек пишет мне блокировки + inputbuffer на каждую) - из результатов этой процедуры и возникли вопросы
может вообще ни оттуда копаем - так подскажите как решать данные проблемы

Ну так и что вам мешает узнать
1. Какие ресурсы заблокировал процесс № 1
2. Какие ресурсы ожидает процесс № 2
11 ноя 09, 15:04    [7914622]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Mordred
Member

Откуда:
Сообщений: 288
то есть таблица sysprocesses?(а какие там поля помимо [lastwaittype], [waitresource] представляют интерес?)
11 ноя 09, 15:07    [7914639]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mordred
то есть таблица sysprocesses?(а какие там поля помимо [lastwaittype], [waitresource] представляют интерес?)

Вам этого мало разве ?
11 ноя 09, 15:08    [7914649]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
nicksh
Member

Откуда: Москва (иногда Нижний Новгород)
Сообщений: 50
Mordred
а какая блокировка может быть при селекте?(вроде разделяемая?и типа с чем она конфликтует?)

Лучше всего для каждой таблицы в select ставить (nolock). Тогда select не добавляет запросов на блокировку.
11 ноя 09, 15:39    [7914958]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
Glory
Member

Откуда:
Сообщений: 104760
nicksh
Mordred
а какая блокировка может быть при селекте?(вроде разделяемая?и типа с чем она конфликтует?)

Лучше всего для каждой таблицы в select ставить (nolock). Тогда select не добавляет запросов на блокировку.

Только результат можно получить неожидаемый
11 ноя 09, 15:41    [7914982]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по блокировкам  [new]
ADx
Guest
Читать некоммиченные транзакции - это прекрасно! )
11 ноя 09, 15:47    [7915039]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить