안녕하세요.
집에서 TEST하다 보니 잘되길래..
질문을 잘못 올린건가 싶어서 질문을 썼다 지웠다 하고 있네요....
Lock개념을 살펴보다가
CREATE TABLE TEST
(
Numbers int identity(1,1),
Summary char(100)
)
위와 같이 Table을 만들고 Dummy 데이터를 한 100개만 만든뒤 기본 'Read Committed' 격리레벨에서
A 세션에서는
--------------------------
begin tran
update test
set summary = 'X'
where numbers = 1
--------------------------
B세션에서는
--------------------------
select *
from test
where numbers = 1
--------------------------
위와 같은 동작을 하게되면 기본적으로 B 세션에서는 Lock이 걸리는게 당연하다 생각했는데..
CREATE CLUSTERED INDEX CLS_IDX ON TEST(Numbers)
이와같이 Clustered Index를 만든뒤에는 데이터가 나오길래...이건 뭔가...하고 봤더니...
집에있는 2008 및 2012 SSMS 상에서는 Clustered Index를 만들던 말던 Block 현상이 있는데...
회사에서 설치한 2012 SSMS상에서는 Clustered Index를 만들면 Select가 되네요.....?
혹시나 Isolation Level이 틀린가 해서 봤는데....'Read Committed' 레벨이 맞구요...
무슨 차이가 있는 걸까요.....
p.s : ...다른 PC는 당연스럽게 Clustered Index를 만들던 말던 Lock 이 걸리네요. 왜 제 PC상 SSMS에서만 그럴까요...
트랜잭션 격리레벨도 특별하게 다른게 없는데...
Comment 1
-
dontcryme
2014.12.23 11:13
신경써 주셔서 감사합니다.
test한답시고.. non update 가 발생하는 value 값으로 update lock을 걸어서 test한게 원인이었네요...