prosource

SQL Server NOLOCK 및 가입

probook 2023. 4. 8. 08:40
반응형

SQL Server NOLOCK 및 가입

배경:실행하고 싶은 퍼포먼스 크리티컬 쿼리가 있어 지저분한 읽기에는 관심이 없습니다.

질문입니다. Join을 사용할 경우 NOLOCK 힌트도 지정해야 합니까?

예를 들어 다음과 같습니다.

SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b WITH (NOLOCK) ON a.ID = b.ID

등가:

SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b ON a.ID = b.ID

'하다'를 요?(NOLOCK)조인된 테이블을 잠그지 않도록 조인드에 힌트를 줄 수 있습니까?

부분은 않겠습니다.READ UNCOMMITTED★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 네.WITH(NOLOCK)각 테이블에서 사용할 수 있습니다.아니요, 당신의 쿼리는 같지 않습니다.

이 운동을 해보세요.테이블 1 테이블 2아직 트랜잭션을 커밋하거나 롤백하지 마십시오.이 시점에서 첫 번째 쿼리는 성공적으로 반환되며, μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μWITH(NOLOCK)힌트를 주다힌트를 주세요.

I was pretty sure that you need to specify the 난 네가 이 모든 걸 다 밝혀야 한다고 확신했어NOLOCK for each 각각에 대해서JOIN쿼리에서를 참조해 주세요.SQL Server 2005 에에에 。

확인을 위해 MSDN을 찾아봤지만 확실한 것은 찾을 수 없었습니다.아래의 진술은 2008년 당신의 두 진술이 동등하다는 것을 생각하게 하는 것 같습니다만, 2005년의 경우는 그렇지 않습니다.

[SQL Server 2008 R2]

모든 잠금 힌트는 뷰에서 참조되는 테이블 및 뷰를 포함하여 쿼리 계획에서 액세스하는 모든 테이블 및 뷰로 전파됩니다.또한 SQL Server는 해당 잠금 일관성 검사를 수행합니다.

[SQL Server 2005]

SQL Server 2005에서는 모든 잠금 힌트가 뷰에서 참조되는 모든 테이블 및 뷰에 전파됩니다.또한 SQL Server는 해당 잠금 일관성 검사를 수행합니다.

또한 2005년과 2008년 양쪽에 적용됩니다.

쿼리 계획에서 테이블에 액세스하지 않으면 테이블 힌트는 무시됩니다.이 문제는 옵티마이저가 테이블에 전혀 액세스하지 않도록 선택하거나 인덱스 뷰에 대신 액세스하기 때문에 발생할 수 있습니다. view can can can can can can can 、 in 、 in 、 the 、 the 、 in 、 in 、 in 、 can 。OPTION (EXPAND VIEWS)쿼리 힌트

둘 다 아니다.개별 잠금 힌트를 제공하는 것보다 항상 더 나은 분리 수준을 설정할 수 있습니다.또, 일관성과 같은 세세한 부분까지 신경 쓰는 경우는, 스냅샷 격리를 사용하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/3783525/sql-server-nolock-and-joins

반응형