SELECT 문장에서 NOLOCK 힌트의 효과
진짜 질문은 다음과 같습니다.
지저분한 읽기에 관심이 없는 경우 SELECT 문에 (NOLOK) 힌트를 추가하면 다음 작업에 영향을 미칩니까?
- 현재 SELECT 문
- 지정된 테이블에 대한 기타 거래
예:
Select *
from aTable with (NOLOCK)
1) 네.NOLOCK
일반 선택 항목보다 빨리 완료됩니다.
2) 네.NOLOCK
그러면 영향을 받는 테이블에 대한 다른 쿼리가 일반 선택보다 빠르게 완료될 수 있습니다.
왜 그럴까?
NOLOCK
일반적으로 (DB 엔진에 따라 다름) 데이터를 제공한다는 의미입니다.이치노을 사용하다이 모든 것이 동시에 빠르고, 리소스 집약적이지 않으며, 매우 위험합니다.
시스템 해 주세요.또, 「」에서는, .NOLOCK
읽었습니다. 이 데이터에는 쿼리 실행 중에 삭제된 행이나 아직 완료되지 않은 다른 세션에서 삭제된 행이 포함되어 있을 수 있습니다.이 데이터에는 부분적으로 업데이트된 행이 포함될 수 있습니다.이 데이터에 외부 키 제약 조건을 위반하는 레코드가 포함되어 있을 수 있습니다.이 데이터는 테이블에 추가되었지만 아직 커밋되지 않은 행을 제외할 수 있습니다.
당신은 그 데이터의 상태를 알 길이 없습니다.
Row Count 하려고 하는 「」를 참조해 주세요.NOLOCK
는 이러한 쿼리의 성능을 향상시키고 데이터베이스 성능에 부정적인 영향을 주지 않도록 하는 좋은 방법입니다.
「」를 해 주세요.NOLOCK
주의 깊게 힌트를 주고 반환되는 데이터를 의심스럽게 취급합니다.
공유 잠금이 없기 때문에 NOLOCK은 대부분의 SELECT 문을 더 빠르게 만듭니다.또한 잠금장치를 발행하지 않는다는 것은 글쓴이가 당신의 SELECT에 의해 방해받지 않는다는 것을 의미합니다.
NOLOCK은 기능적으로 READ UNCOMMITED의 격리 레벨과 동등합니다.주요 차이점은 일부 테이블에서는 NOLOCK을 사용할 수 있지만 다른 테이블에서는 사용할 수 없다는 것입니다.복잡한 쿼리의 모든 테이블에서 NOLOCK을 사용할 계획이라면 모든 테이블에 힌트를 적용할 필요가 없으므로 SET TRANSACTION INCOMITED LEVEL READ UNCOMMITED를 사용하는 것이 더 쉽습니다.
다음은 사용자가 원하는 모든 격리 수준에 대한 정보와 표 힌트입니다.
위의 내용과 더불어 nolock은 실제로 선택 전에 커밋된 행을 얻지 못할 위험이 있다는 점에 유의해야 합니다.
http://blogs.msdn.com/sqlcat/archive/2007/02/01/previously-committed-rows-might-be-missed-if-nolock-hint-is-used.aspx 를 참조해 주세요.
잠길 때까지 기다릴 필요가 없기 때문에 더 빠를 것입니다.
각 트랜잭션이 다른 트랜잭션이 완료될 때까지 기다릴 필요가 없으므로 쿼리가 동시에 여러 번 실행되는 경우 "예"가 됩니다.그러나 쿼리가 단독으로 한 번 실행되는 경우 대답은 "아니오"입니다.
네. WITH(NOLOK)를 주의 깊게 사용하면 데이터베이스 속도가 전반적으로 빨라질 가능성이 높습니다.즉, 다른 트랜잭션은 이 SELECT 문이 완료될 때까지 기다릴 필요가 없지만, 다른 트랜잭션은 처리 시간을 새 트랜잭션과 공유하기 때문에 속도가 느려집니다.
사용만 주의해 주세요WITH (NOLOCK)
클러스터된 인덱스가 있는 테이블의 SELECT 문에 있습니다.
WITH(NOLOK)는 종종 데이터베이스 읽기 트랜잭션 속도를 높이는 마법의 방법으로 이용됩니다.
결과 세트에는 아직 커밋되지 않은 행이 포함될 수 있으며, 나중에 롤백되는 경우가 많습니다.
비클러스터 인덱스를 가진 테이블에 WITH(NOLOK)를 적용하면 행 데이터가 결과 테이블로 스트리밍될 때 다른 트랜잭션에 의해 행 인덱스를 변경할 수 있습니다.즉, 결과 세트에 행이 누락되거나 같은 행을 여러 번 표시할 수 있습니다.
READ COMMITED는 여러 사용자가 같은 셀을 동시에 변경하는 단일 열 내에서 데이터가 파손되는 문제를 추가합니다.
언급URL : https://stackoverflow.com/questions/210171/effect-of-nolock-hint-in-select-statements
'programing' 카테고리의 다른 글
Common Table Expressions에 대해 중첩된 WITH 절을 만들 수 있습니까? (0) | 2023.04.07 |
---|---|
SQL Server 설치 - 설치 미디어 폴더란? (0) | 2023.04.07 |
sqlcmd를 사용하여 데이터를 SQL Server에서 CSV 형식으로 내보내려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SQL Server Management Studio에서 쿼리 기록을 보는 방법 (0) | 2023.04.07 |
T-SQL의 sleep 명령어 (0) | 2023.04.07 |