안녕하세요
질문이 또 있습니다.
datarows lock의경우 실제 lock으로 잡는 단위는 row인가요? block인가여??
datarows lock에서 lock sleep이 발생하는 경우가 있던데...업무 성격으로 파악했을때 row단위는 아닌거 같아서요
datarows의 경우 row단위로 되는데 lock promotion이라고 해서 row lock 200개 이상이 되면 table lock으로 전환됩니다 (default value)
1>
datarow lock은 row단위로 lock을 잡고
allpage lock은 page단위로 lock을 잡습니다.
blocking은 lock 스키마와 상관없이 수정 삭제되는
데이터 [ row( datarows lock), page( allpage lock) ]에
select , insert, delete, update 시에 발생할 수 있습니다.
ex) bloking 발생 예
첫번째 세션
create table test1
(
c char(1)
)
insert test1 values ('1')
begin tran
update test1
set c = '2'
두번째 세션
select * from test1
2> datarows lock에서 table lock이 발생할 수도 있습니다.
sp_configure 'promotion' 으로 확인하면 됩니다.
row lock promotion HWM : rowlevel lock이 이수치보다 많은면 table lock 발생