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 을 사용하기도 합니다.
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;
동일한 쿼리인데 왜 실행시간이 달라질까? (0) | 2022.11.21 |
---|---|
SQL0913 Row or object in use (0) | 2022.11.14 |
Db2 사용자 정의 함수(UDF) 성능 관련 옵션 (0) | 2022.11.07 |
데이터 마스킹(Masking) (0) | 2022.11.03 |
Db2 for i 카탈로그 (0) | 2022.10.26 |
댓글 영역