NOLOCK :
공유 잠금을 실행하거나 단독 잠금을 유지하지 않습니다.
이 옵션을 적용하면 커밋되지 않은 트랜잭션이나 읽는 중
롤백된 페이지 집합을 읽을 수 있습니다.
커밋되지 않은 읽기가 가능합니다.
단 , SELECT 명령문에만 적용됩니다.
보통 select문을 실행하게 되면 SQL서버는 'Shared Lock'을 걸게됩니다.
즉 select하는 순간에 다른 사용자에 의한 데이터의 변경을 잠시 막게되지요.
이 Lock때문에 다른 사용자의 SQL문 수행이 방해받게 됩니다.
대부분의 웹프로그래밍에서는 select시
다른 사용자에 의해 데이터가 변경되어도 큰 문제가 발생하지 않습니다.
다음과 같이 'nolock'이라는 잠금힌트를 사용해서
select를 하면 잠금이 걸리지 않은 상태에서 실행할 수 있습니다.
use pubs
go
select * from authors with (nolock)
혹은
select * from authors (nolock) -- with 생략가능함.
여기서 'nolock' 을 잠금힌트라고 합니다.
'nolock' 잠금힌트를 사용할 경우 커밋되지 않은 데이터나
읽기도중 롤백된 데이터도 읽어오게 됩니다.
즉 dirty page를 읽게되지요..
그러나 게시판의 조회수가 5에서 6으로 되었는데
5로 읽어온다고 해서 크게 문제가 되진 않겠지요?
좀 정리를 하면
select 결과가 실제 데이터와 다르더라도 큰 문제가 되지 않는 경우
'nolock'힌트를 사용하면 쿼리실행의 성능향상을 도모할 수 있습니다.
반응형
':::: 개발 :::: > ::: MSSQL :::' 카테고리의 다른 글
SYSOBJECT 활용 쿼리문 모음 (2) | 2010.07.07 |
---|---|
조인테이블 업데이트 (0) | 2010.02.03 |
[본문스크랩] MS SQL DATE (0) | 2009.12.28 |
[본문스크랩] MS-SQL 설치 팁(보류된 작업 파일) (0) | 2009.12.28 |
[본문스크랩] SET NOCOUNT ON (0) | 2009.12.28 |
[본문스크랩] sql2005 Express 설치 및 adventureworks 설치 (0) | 2009.12.28 |
간단 JOIN 개념잡기 (0) | 2009.12.28 |
금액 단위 변환 (0) | 2009.12.28 |