반응형
MSSQL WITH(NOLOCK)이란 ?
WITH(NOLOCK) : 해석하는 그대로 MSSQL에 잠금(LOCK)을 걸지 않는다는 것이다
MSSQL의 잠금은 데이터베이스의 자원을 자신이 사용하고 있으므로 다른 사용자의 엑세스를 제한하는 것을 의미 합니다.
잠금(LOCK)은 왜 필요한가?
데이터의 일관성을 유지하기 위해 필요합니다.
즉 동일한 데이터가 서로 다른 값을 갖지 않도록 하기 않도록 하는 것을 의미합니다.
일관성이 유지되지 않는다면 데이터베이스 자체에 심각한 오류의 요소가 되므로 잠금이 필요합니다.
즉 테이블에 UPDATE나 INSERT, DELECT 등 DML 구문을 사용하고 있을 때 테이블을 SELECT를 하면 구문이 끝날때 까지 대기를 합니다.
하지만 WITH(NOLOCK)을 사용하면 대기없이 바로 SELECT 결과가 도출됩니다.
기다리면 되는데 왜 WITH(NOLOCK)을 사용하는가?
실제 데이터베이스에서는 실시간으로 많은 데이터들이 업데이트됩니다.
데이터들이 업데이트될때 SELECT LOCK으로 인해 대기가 발생할 경우 조회속도가 현저히 줄어들거나 액세스 자체를 못하는 상황이 발생할 수 있으므로 WITH(NOLOCK)을 사용합니다.
WITH(NOCK) 사용방법
SELECT TOP(10) *
FROM employee WITH(NOLOCK)
SELECT E.NAME, B.ID
FROM employee AS E WITH(NOLOCK)
INNER JOIN USER AS B WITH(NOLOCK)
ON E.NAME_ID = B.NAME_ID
반응형
'데이터베이스' 카테고리의 다른 글
[MSSQL] 한글(글자) 깨짐현상 (0) | 2023.01.02 |
---|---|
[Database] WITH 구문 (0) | 2022.11.25 |
[MSSQL]데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다. (0) | 2022.10.20 |
MSSQL과 Oracle의 차이점 (0) | 2022.09.04 |
[oracle]현재년도 기준 5년 기록 조회 (0) | 2022.08.24 |