"TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"와 NOLOCK의 차이점은 무엇입니까? 하나가 다른 것보다 낫습니까?NOLOCK 대 트랜잭션 격리 수준
답변
그들은 똑같습니다. 범위가 다르기 때문입니다. NOLOCK은 테이블 단위로 배치되고 SET Transaction...
은 블록으로 배치 될 수 있습니다.
확인해 주셔서 감사합니다. – Jason
그것은 실행중인 SQL의 모든 테이블에 nolock을 두는 것과 같습니다. –
NOLOCK은 쿼리 힌트이므로 지정된 쿼리 내의 특정 테이블에만 적용됩니다.
트랜잭션 격리 수준 설정은 현재 연결에서 또는 따라서 명시 적으로 수정 될 때까지 실행되는 모든 코드에 적용됩니다.
명확히하기 위해 기능적으로 직장에서의 격리 수준은 동일하지만 적용 범위는 다를 수 있습니다.
몇 시간 전부터 SQL Server SELECT statements causing blocking까지 that answer을 참조하십시오. Remus Rusanu을 인용
:
SELECT 업데이트를 차단할 수 있습니다. 적절하게 설계된 데이터 모델 및 쿼리는 차단을 최소화하고 문제가되지 않습니다. '보통'NOLOCK WITH 힌트는 거의 항상 잘못된 대답입니다. 정답은 쿼리를 조정하여 거대한 테이블을 검사하지 않는 것입니다.
쿼리가 가변적이지 않은 경우 먼저 SNAPSHOT ISOLATION 수준을 고려해야하며 두 번째로 데이터베이스 스냅 숏 사용을 고려해야하며 마지막 옵션은 DIRTY READS 여야하며 NOLOCK 힌트를 사용하는 대신 격리 수준을 변경하는 것이 좋습니다. 더티 읽기는 이름에서 알 수 있듯이 일치하지 않는 데이터를 반환합니다 (예 : 전체 시트의 불균형).
다른 답변도 도움이 될 수 있습니다.
제 의견이지만 여기 제공된 참고서는 게시 된 질문에 대답하지 않습니다. –
NOLOCK과 다른 격리 방법을 비교 한 이후로 그렇습니다.하지만 도움이 될 것이라고 생각했습니다. –
잠금 힌트 (nolock)로만 사용되며 다른 하나는 연결 범위로 사용됩니다.
두 가지 중 하나에주의하십시오. 더티 읽기는 앱에 따라 매우 나쁜 것일 수 있습니다. 동일한 레코드를 두 번 읽거나 페이지 이동으로 인해 레코드가 누락되면 사용자에게 매우 혼란스러운 일이 될 수 있습니다 ...
- 1. EJB 트랜잭션 격리 수준
- 2. oledb 연결의 트랜잭션 격리 수준
- 3. 트랜잭션 격리 수준 좋은 설명
- 4. 금융 응용 프로그램의 트랜잭션 격리 수준
- 5. 트랜잭션 일련 화 가능 격리 수준 설명
- 6. MySQL과 PostgreSQL의 Django 트랜잭션 격리 수준
- 7. mysql 격리 수준
- 8. Microsoft.Practices.EnterpriseLibrary의 기본 격리 수준 설정
- 9. TransactionScope 및 격리 수준
- 10. MSDTC 및 격리 수준
- 11. 데이터베이스의 격리 수준
- 12. BIRT에서 트랜잭션 격리 정의
- 13. 스프링 주석 기반 트랜잭션에서 격리 수준 설정
- 14. 코드에서 Sql 클라이언트 트랜잭션 대 데이터베이스 제어 트랜잭션
- 15. 트랜잭션 대 비 트랜잭션 msmq
- 16. SSIS 시퀀스 컨테이너 - 트랜잭션 수준
- 17. 직렬화 가능 격리 수준 원 자성
- 18. SQL Server 스냅 숏 격리 수준 문제
- 19. 격리 수준 - 일련 가능. 언제 이것을 사용해야합니까?
- 20. mySQL - PHP mysqli를 사용하여 격리 수준 설정
- 21. 기본 SQL Server 격리 수준 변경
- 22. Microsoft SQL Server 2005의 기본 격리 수준
- 23. 차단, 잠금 및 격리 수준 간의 관계는 무엇입니까?
- 24. MySQL 트랜잭션 격리 수준이 손상 되었습니까?
- 25. Serializable의 트랜잭션 격리 수준이 작동하지 않습니다.
- 26. Spring + JUnit4 + JPA/Hibernate - 트랜잭션 격리 이상한가?
- 27. 트리거가 현재 트랜잭션 격리 수준으로 실행됩니까?
- 28. 개체 그래프 및 READ_COMMITTED 트랜잭션 격리
- 29. 트랜잭션 IsolationLevel을 설정하지 않고 Linq to SQL을 사용하는 NOLOCK
- 30. SQL 추적을 통해 저장 프로 시저의 트랜잭션 수준 결정
MSSQL 2012에서 'NOLOCK' 힌트는 사용되지 않으며 해당 READUNCOMMITTED 힌트로 대체됩니다 . [출처] (http://msdn.microsoft.com/en-us/library/ms187373.aspx) – Jeroen
제안 된 소스에서 다음과 같이 말합니다. - UPDATE 또는 DELETE 문의 대상 테이블에 적용되는 FROM 절의 READUNCOMMITTED 및 NOLOCK 힌트 사용에 대한 지원은 SQL Server의 차기 버전에서 제거됩니다. '. 'NOLOCK'은 더 이상 사용되지 않는다고 말하지는 않습니다. 현재'NOLOCK'과'READUNCOMMITTED' 힌트를 모두 사용할 수 있습니다. – RBT