DB ARCHITECTURE

[MSSQL] 격리수준

2021. 12. 16. 14:12
반응형

 

격리 수준은 데이터를 읽고 쓰는 동시 사용자들의 동작을 결정하는 역할을 한다. 

 

읽기 작업이란, 기본적으로 공유 잠금을 이용해서 데이터를 조회(SELECT)하는 모든 구문을 말한다.


쓰기 작업이란, 테이블에 대해 변경(INSERT,UPDATE,DELETE)을 하며 

 

배타적 잠금을 필요로 하는 모든 구문을 말한다.  

 

쓰기 작업에 대한 동작에서 필요로 하는 잠금과 잠금 지속 시간 등에 대해서는 조절을 할 수 없다.

 

 

 

하지만, 읽기 작업에 대해서는 조절이 가능하다. 

 

또한 읽기 작업의 동작을 조절하게 되면 쓰기 동작에도 간접적인 영향을 미칠 수 있다. 

 

이러한 작업을 격리 수준의 설정을 통해 할 수 있다.

 

격리 수준 설정은 세션 옵션을 이용해서 세션 수준에서 할 수도 있고,

 

테이블 힌트를 이용해서 쿼리 수준에서 할 수도 있다.

 

 

 

 

SQL Server에서는 기본적으로 

 

"비관적 동시성(pessimistic concurrency)"을 기반으로 하는 네 가지 형태의 격리 수준을 제공한다


1) READ UNCOMMITED


2) READ COMMITED(On-premises SQL Server의 기본값 )


3) REPEATABLE READ


4) SERIALIZABLE

 

 

 

 

또한 SQL Server 에서는

 

"낙관적 동시성(optimistic concurrency)"을 기반으로 하는 두 가지 격리 수준도 제공하고 있다.

 

1) SNAPSHOT

 

2)READ COMMITTED SNAPSHOT

 

 

 

다음과 같은 명령을 통해 세션 전체에 대한 격리 수준을 설정할 수 있다.

SET TRANSACTION ISOLATION LEVEL <격리수준 이름>
 
또한, 테이블 힌트를 사용해서 쿼리 격리 수준을 설정할 수도 있다.
SELECT ... FROM <table> WITH(<격리수준 이름>)
 

 

세션 옵션에서는 격리 수준의 이름이 REPEATABLE READ 와 같이 

 

하나 이상의 단어로 구성되어 있는 경우에 중간에 공백을 입력해줘야한다. 

 

하지만, 쿼리 힌트의 경우 WITH(REPEATABLEREAD) 와 같이 공백을 입력하지 않는다.

 

또한, 테이블 힌트로 사용하는 격리 수준 이름 중에는 동의어를 가지는 것도 있다. 

 

예를들어, NOLOCK 은 READ UNCOMMITED 대한 동의어이며, 

 

HOLDLOCK은 SERIALIZABLE  에 대한 동의어다.

 

반응형

'DB ARCHITECTURE' 카테고리의 다른 글

[MSSQL] 격리수준-낙관적 동시성  (0) 2021.12.16
[MSSQL] 격리수준 - 비관적 동시성  (0) 2021.12.16
[MSSQL] LOCK  (0) 2021.12.16
트랜잭션의 정의 및 동작 원리  (0) 2021.12.16
SQL-SERVER SCHEDULER : sqlserver 스케쥴러(2)  (7) 2021.12.15
'DB ARCHITECTURE' 카테고리의 다른 글
  • [MSSQL] 격리수준-낙관적 동시성
  • [MSSQL] 격리수준 - 비관적 동시성
  • [MSSQL] LOCK
  • 트랜잭션의 정의 및 동작 원리
ssh9308
ssh9308
신승환의 기술 블로그
신승환의 기술 블로그신승환의 기술 블로그
반응형
ssh9308
신승환의 기술 블로그
ssh9308
전체
오늘
어제
  • 분류 전체보기 (203)
    • SQL Basic (11)
    • SQL Tuning (11)
    • DB ARCHITECTURE (21)
    • 컴퓨터 구조 (6)
    • 코딩 테스트 (25)
    • 알고리즘 (5)
    • JAVA (4)
    • 개발 & 구현 (6)
    • C,C++ (5)
    • 면접대비 자료 (1)
    • JS (3)
    • MongoDB (6)
    • Redis (7)
    • 네트워크 (38)
    • bash shell (0)
    • Kafka (2)
    • Elasticsearch (11)
    • Spring (1)
    • SQL SERVER ARCHITECTURE (0)
    • Python (1)
    • RUST (12)
    • 보안 (3)
    • 운영체제 (19)
    • 결혼관련 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 가성비
  • 다이아
  • 종로
  • 고급
  • 예물
  • 커플링
  • 웨딩링
  • 공방301
  • 웨딩밴드

최근 댓글

최근 글

hELLO · Designed By 정상우.
ssh9308
[MSSQL] 격리수준
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.