성능에 대해서는 계속해서 선택에 집중합니다.
Shared는 읽기를 차단하지 않습니다.
공유 잠금 블록 업데이트.
수백 개의 공유 잠금이있는 경우 공유 잠금이 지워질 때까지 기다려야하므로 배타적 잠금을 얻기 위해 잠시 업데이트가 필요합니다.
기본적으로 선택 (읽기)은 공유 잠금을 사용합니다.
공유 (S) 잠금을 사용하면 동시 트랜잭션이 리소스를 읽을 (SELECT) 수 있습니다.
다른 선택에 영향을 미치지 않는 공유 잠금 (1 또는 1000).
차이점은 nolock 대 공유 잠금이 업데이트 또는 삽입 작업에 미치는 영향입니다.
리소스에 공유 (S) 잠금이있는 동안에는 다른 트랜잭션이 데이터를 수정할 수 없습니다.
공유 잠금이 업데이트를 차단합니다!
그러나 nolock은 업데이트를 차단하지 않습니다.
이는 업데이트 성능에 큰 영향을 미칠 수 있습니다. 또한 인서트에 영향을 미칩니다.
더티 읽기 (nolock)는 더럽게 들립니다. 부분적인 데이터를 얻을 수는 없습니다. 업데이트가 John을 Sally로 변경하면 Jolly를 얻을 수 없습니다.
동시성을 위해 공유 잠금을 많이 사용합니다. 데이터를 읽는 즉시 부실합니다. 다음 밀리 초 후에 Sally로 변경되는 John의 읽기는 오래된 데이터입니다. 다음 밀리 초 후에 John이 롤백되는 Sally 읽기는 오래된 데이터입니다. 그것은 밀리 초 수준입니다. 사용자가 공유 잠금을 사용하는 경우 실행하는 데 20 시간이 걸리고 사용자가 잠금을 사용하지 않는 경우 실행하는 데 4 시간이 걸리는 데이터 로더가 있습니다. 이 경우 공유 잠금으로 인해 데이터가 16 시간 유효하지 않게됩니다.
nolocks를 잘못 사용하지 마십시오. 그러나 그들은 장소가 있습니다. 바이트가 1로 설정되어있을 때 체크를 잘라 내고 체크가 끊어 질 때 2로 설정하려면-nolock 시간이 아닙니다.
SELECT
사용하면 수백 개의 쿼리 에 영향이WITH (NOLOCK)
있습니까?