사용 시나리오는 구체적이지 않지만 테이블에서 데이터를 가져올 수 있습니다. 심각한 경고이 있습니다.
marc_s가 말했듯이 READ UNCOMMITTED
스냅 샷 격리 수준을 사용할 수 있으며 트랜잭션 내 모든 select 문에 WITH (NOLOCK)
을 사용하는 것과 동일한 효과가 있습니다. 해당 테이블을 읽으려고하지만 트랜잭션의 다른 모든 읽기를 정상적으로 처리하려면 NOLOCK
힌트를 쿼리의 특정 테이블에 넣는 것이 좋습니다. 따라서, 예를 들어 : firstTable
에 대한 일반적인 읽기 잠금을 실행하지만 잠금 장치 secondTable
을 읽을 것
SELECT *
FROM firstTable f INNER JOIN
secondTable s WITH (NOLOCK) on f.Key = s.Key
. 데이터를 효과적으로 손상시킬 수 있으므로 잠금 장치는 매우 위험 할 수 있습니다. 수행중인 삽입물이 데이터를 재정렬하고 페이지 분할을 일으키는 경우 동일한 행을 두 번 가져올 수 있으며 모든 종류의 비슷한 불쾌감을 느낄 수 있습니다.
따라서 가능하지만 이상하지는 않으며 은에주의해야합니다. Some good further reading is here, courtesy of Jason Strate.
수 없습니다. 독자가 커밋 된 데이터를 얻기 위해'READ COMMITTED'를 사용한다면, 그것은 차단 될 것입니다. 'READ UNCOMMITTED'를 사용할 수 있습니다.하지만 커밋되지 않은 데이터도 얻을 수 있습니다. [READ COMMITTED SNAPSHOT ISOLATION 트랜잭션 수준] (http://msdn.microsoft.com/en-us/library/tcbchxcb%28vs.80%29.aspx)을 확인해야합니다. (스냅 샷을 사용하여) -하지만 [다른 단점이 있습니다] (http://www.jimmcleod.net/blog/index.php/2009/08/27/the-potential-dangers-of-the-read-committed -snapshot-isolation-level /) ('TempDB'에 대한 더 높은 압력) –
'READPAST' 힌트를 볼 수 있습니다. –