SQLServer의 기본 Isolation Level은 READ_COMMITTED
이다.
Execution plan
탭이 생성된다.exec sp_helpindex [tablename]
: 인덱스 확인EXEC sys.sp_helpindex @objname = N'User' -- nvarchar(77)
WITH (NOLOCK)
으로 SHARED Lock 없이 쿼리를 수행한다.READ_UNCOMMITTED
로 하거나 모든 FROM절의 테이블 명 뒤에 WITH (NOLOCK)
을 지정한다. 붙여쓰지 말것.SELECT id FROM table_a WITH (NOLOCK) SELECT a.id, b.id FROM table_a a WITH (NOLOCK), table_b b WITH (NOLOCK) WHERE a.id=b.id
READ_UNCOMMITED
의 모든 문제점을 가지게 된다.UPDATE
문이 업데이트 대상 행을 탐색할 때 SELECT 처럼 SHARED Lock을 사용하면 동시에 둘 이상의 UPDATE 수행시 나중에 EXCLUSIVE Lock으로 변경이 불가하다.(SHARED Lock이 걸린 상태에서는 EXCLUSIVE Lock 불가 원칙)