DataBase/MSSQL

WITH (READUNCOMMITTED) 와 WITH (NOLOCK) 차이 | ChatGPT

stacknstack 2023. 6. 21. 22:00
728x90
반응형

WITH (READUNCOMMITTED)

Microsoft SQL Server와 관련이 있습니다.

트랜잭션이 다른 동시 트랜잭션으로부터 커밋되지 않은 데이터를 읽을 수 있도록 허용합니다.

"더티 리드(dirty read)" 격리 수준이라고도 알려져 있습니다.

커밋되기 전에 동시 트랜잭션이 수행한 변경사항을 읽을 수 있으므로
일관성이 없거나 정확하지 않은 데이터를 읽을 수 있습니다.

WITH (NOLOCK)

Microsoft SQL Server의 쿼리 힌트와 관련이 있습니다.

특정 SELECT 문에서 "WITH (NOLOCK)" 쿼리 힌트를 사용하여
커밋되지 않은 데이터를 읽을 수 있도록 허용합니다.

"WITH (READUNCOMMITTED)"와 유사하게 일관성이 없거나 정확하지 않은 데이터를 읽을 수 있습니다.

유사한 특징

"WITH (READUNCOMMITTED)"와 "WITH (NOLOCK)"는
커밋되지 않은 데이터를 읽는 유사한 동작을 수행할 수 있습니다.

차이

"WITH (READUNCOMMITTED)"는 전체 트랜잭션의 격리 수준으로 설정되어
해당 트랜잭션 내의 모든 후속 쿼리에 영향을 미칩니다.

반면 "WITH (NOLOCK)"은 특정 SELECT 문의 쿼리 힌트로 사용되며,
해당 문만이 커밋되지 않은 데이터를 읽을 수 있게 허용합니다.

주된 차이점은 "WITH (NOLOCK)"이 특정 쿼리 내에서 쿼리 힌트로 사용되며,
"WITH (READUNCOMMITTED)"는 전체 트랜잭션의 격리 수준으로 사용된다는 것입니다.

유의할 사항

부적절하게 사용할 경우 데이터 무결성 문제를 일으킬 수 있습니다.
이러한 격리 수준은 데이터 일관성이 중요하지 않은 특정 시나리오에서만 사용되어야 하며
성능 향상의 이점이 일관성 상실의 위험을 상쇄하는 경우에만 사용해야 합니다.

출처 | ChatGPT

728x90
반응형