상세 컨텐츠

본문 제목

Db2 for i Isolation level

Db2 for i

by 아이구르미 2022. 10. 27. 17:00

본문

Db2 에는 어플리케이션이 데이터를 사용중일 때 격리/잠금을 통해 다른 프로세스가 데이터를 액세스할 수 있는 수준을 컨트롤하기 위한 설정값으로 Isolation level을 사용합니다. 

Db2 for i 의 시스템 용어로는 Commitment control이라고 지칭하기도 합니다.

 

Db2 에서 공통적으로 사용하는 Isolation level의 종류는 다음과 같이 5가지가 있습니다. 2글자로 된 약자를 사용하며 앞에 * (별표)를 붙여야 합니다.

 

*NC : No Commit  

*UR : Uncommitted Read   (ANSI SQL 표준 Read Uncommitted 와 동일)   <--- Db2 for i 의 디폴트값

*CS : Cursor Stability  (ANSI SQL 표준 Read Committed 와 동일)

*RS : Read Stability  (ANSI SQL 표준 Read Stability 와 동일)

*RR : Repeatable Read  (ANSI SQL 표준 Serializable 과 동일)

 

Db2 for i 의 시스템 내부 명령어에서는 *NC 대신 *NONE을, *UR 대신 *CHG 를, *RS 대신 *ALL 을 사용하기도 합니다.

Access Client Solution의 격리 레벨 설정 화면 예시

Isolation Level (격리 레벨) Access to
uncommitted data 또는
Dirty Read

Commit 되기 전의 데이터를
볼 수 있는 현상
Non-repeatable reads Phantom Read
RR (Repeatable Read) 불가능 불가능 불가능
RS (Read Stability) 불가능 불가능 가능
CS (Cursor Stability) 불가능 가능 가능
UR (Uncommitted Read) 가능 가능 가능

System 의 디폴트 설정은 대부분 UR (Uncommitted Read) 이긴 하지만, 이 값은 다양한 방식으로 Override 할 수 있습니다.

- JDBC Connection 속성값

- SQL 문으로 설정

SET TRANSACTION ISOLATION LEVEL NONE;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL ALL;

- SQL 문에 WITH xx 옵션

SELECT column FROM table WITH CS;

 

관련글 더보기

댓글 영역