0
답변 1 isolation 과 with nolock 관계 답변 1 (/p/sql)
nolock 이라는 락힌트를 공부하다가 DB isolation 라는 부분을 공부하고있는데 이 둘의 관계를 이해하기 쉽게 설명해주실 분을 찾고있습니다 ㅠㅠ

nolock 이라는 락힌트를 공부하다가

DB isolation 라는 부분을 공부하고있는데 이 둘의 관계를 이해하기 쉽게 설명해주실 분을 찾고있습니다 ㅠㅠ

DB 데이터베이스 락힌트 격리성
+
yous3163 님께서 2개월 전에 MS SQL에 올린 질문

isolation 과 with nolock 관계

0
답변 1 isolation 과 with nolock 관계 답변 1 (/p/sql)
nolock 이라는 락힌트를 공부하다가 DB isolation 라는 부분을 공부하고있는데 이 둘의 관계를 이해하기 쉽게 설명해주실 분을 찾고있습니다 ㅠㅠ

nolock 이라는 락힌트를 공부하다가

DB isolation 라는 부분을 공부하고있는데 이 둘의 관계를 이해하기 쉽게 설명해주실 분을 찾고있습니다 ㅠㅠ

DB 데이터베이스 락힌트 격리성
+
yous3163 님께서 2개월 전에 MS SQL에 올린 질문

1개의 답변

1
[답변]isolation 과 with nolock 관계 (/p/)
DB를 통해서 데이터를 조회하거나(SELECT), 저장/변경/삭제(INSERT,UPDATE,DELETE)를 할 수 있는데 하나의 DB에 여러 사람들이 접속해서 데이터를 조회하거나 ..

DB를 통해서 데이터를 조회하거나(SELECT), 저장/변경/삭제(INSERT,UPDATE,DELETE)를 할 수 있는데

하나의 DB에 여러 사람들이 접속해서 데이터를 조회하거나 변경할 수 있습니다.

 

그런데 동시에 여러 사람이 하나의 DB에 접속하다보면 동시성의 문제가 발생합니다.

예를 들면, 어떤 접속에 의해 데이터가 변경되고 있는데 변경되고 있는 바로 그 짧은 순간에

누군가가 데이터를 읽을 때 아직 변경이 완료되지 않은 정확하지 않은 데이터를 읽어온다든가 하는 등의 경우가 발생할 수 있습니다.

 

이런 문제를 방지하기 위해 MS SQL에서는 하나의 접속이 특정 작업을 하는 동안 다른 작업을 못하도록 isolation(일관성)이 걸리도록 되어있습니다.

즉, 하나의 접속이 데이터를 변경하는 작업을 완전히 끝낼 때까지 다른 접속이 데이터를 읽을 수 없도록 하는 것이 기본 값인데

이 수준의 isolation을 READ COMMITED라고 합니다.

다시 말해, 데이터가 COMMITED(변경 작업 완료)된 경우에만 조회를 할 수 있도록 하고

그렇지 않으면 COMMITED되기 전까지는 접속에 LOCK을 걸어서 기다리게 만듭니다.

 

그런데 때로는 데이터의 일관성과 관계없이 기다리지 않고 빨리 데이터를 읽어오기를 원하는 경우가 있습니다.

이 때 제공되는 옵션이 NOLOCK입니다.

SQL 쿼리를 실행할 때 WITH NOLOCK라는 옵션을 주면 데이터의 일관성과 상관없이 기다리지 않고 데이터를 조회할 수 있습니다.

 

참고로 WITH NOLOCK 옵션은 현재 접속한 쿼리에 대해서만 적용되는 옵션이고 

만약 전체 접속에 대해 READ COMMITED를 해제하고 싶으면 아래와 같이 시스템 쿼리를 실행해서 READ UNCOMMITED로 바꿀 수 있습니다.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

 

isolation sql transaction commit nolock lock
사탕 주기
+
kimho 님께서 2개월 전에 MS SQL에 올린 글
조회수 456
답글 1
URL