WITH (NOLOCK)

-- MSSQL 2008. 11. 7. 09:36
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
MSSQL은 기본 격리 수준(isolation level)이 read committed입니다. read committed라는 것이 데이터를 읽을 때에 공유 잠금을 유지한다는 것입니다. 그래서 WITH (NOLOCK)을 붙여 공유 잠금되지 않도록 하여 데이터를 읽을 때 UPDATE, INSERT등이 제약받지 않도록 합니다.

반대로, UPDATE나 INSERT와 같은 동작을 수행할 때 역시 잠금(lock)이 발생하게 되는데 이런 잠금에 영향받지 않고, 현재의 값을 그대로 읽어오기 위한 단순쿼리용이라면 WITH (NOLOCK)을 써서 데이터베이스의 효율을 증가합니다. (Dirty Read를 허용하는 효과입니다)

WITH (NOLOCK) 대신 WITH (READUNCOMMITTED)를 써도 같은 효과를 내며, 쿼리 맨 상단에 아래와 같이 써주어도 해당 SP의 모든 쿼리는 WITH (NOLOCK)과 같은 효과를 내게 됩니다.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

'-- MSSQL' 카테고리의 다른 글

(T-SQL) 서버 측 동적 쿼리에서의 탈출  (0) 2008.11.21
명시적으로 인덱스 지정하기  (0) 2008.11.10
SET SHOWPLAN_TEXT ON  (0) 2008.11.10
COUNT(*)와 COUNT(컬럼명)  (0) 2008.11.10
SET NOCOUNT ON  (0) 2008.11.07
posted by 어린왕자악꿍