Back-end/DataBase

[DB2] WITH UR 이란?

cheersHena 2021. 11. 16. 10:50
반응형

WITH UR이란 ?


DB2를 사용해보신 분이라면 쿼리문에 WITH UR이 붙어있는 구문을 본 적이 있을 것이다.
UR이란, Isolation level 중 하나로 Uncommited Read 의 약어이다.

기본적으로 내가 조회하고자 하는 table의 다른 트랜잭션이 진행 중일 때는 동시 조회가 불가능하다.
다른 트랜잭션이 끝날 때 까지 대기하다가 commit 또는 rollback 처리 후에 조회가 가능하다.


**그러나 WITH UR 옵션을 붙이면 다른 트랜잭션이 진행 중이라 하더라도 대기하지 않고 실시간으로 변경중인 데이터를 가지고 와서 조회할 수 있다.**

단, commit이 되지 않은 데이터를 가지고 오는 경우, 신뢰성을 보장 되지 않는다.
보통 단순 조회 SELECT시 사용한다.


SELECT 외 INSERT,UPDATE,DELETE 문에도 WITH UR을 사용할 수 있지만 큰 의미는 없다.
DB2에서는 WITH UR옵션에 상관없이 삽입, 갱신, 삭제되는 원장의 모든 행에 락을 걸기 때문이다.
따라서 조회 외 변경되는 행을 commit 또는 Rollback 전까지는 다른 응용프로그램에 의해서 변경될 수 없다.
즉, SELECT문에서만 유의미하게 동작한다고 할 수 있다.

문법은 쿼리의 가장 마지막에 사용한다.

*사용 예

SELECT * FROM table WITH UR;




반응형