[MS-SQL]WITH(NOLOCK)이란, 사용법

2023. 11. 10. 17:33SQL/MSSQL

MSSQL의 기본 격리 수준(Isolation Level)은 Read Committed이다.

그로 인해 SELECT 시 공유장금(S Lock)이 걸리게 되는데

이는 DML(INSERT, UPDATE, DELETE) 작업 중인 ROW 또는 TABLE에 SELECT를 할 경우 작업이 모두 끝나고

SELECT가 진행된다.

이럴 경우 DB의 성능이 떨어지고, 데드락(Deadlock)이 발생할 수 있다.

 

이를 방지하기 위해 사용하는 것이 WITH(NOLOCK)이다.

WITH(NOLOCK)의 격리수준(Isolation Level)은 Read Uncommitted와 같다.

다른 작업 중에도 SELECT 가 실행되면 조회를 진행한다.

 

주의할 점이 있다면 Committed되지 않은 데이터를 읽어오기 때문에

트랜잭션이 Rollback 될 경우, 잘못된 데이터를 읽어 올 수 있다.

 

이럴 경우 정합성이 떨어지기 때문에 정확성이 필요한 경우에는 사용하지 않는 게 좋다.

 

사용방법은

아래와 같이 테이블명 뒤에 추가해 주면 된다.

SELECT * FROM tbl_product1 WITH(NOLOCK)

 

'SQL > MSSQL' 카테고리의 다른 글

[MS-SQL] 데이터 타입 변환하기(CONVERT, CAST)  (2) 2023.12.06