mun dev

[Oracle] For update 란? 사용법 본문

DB/Oracle

[Oracle] For update 란? 사용법

mndev 2024. 7. 20. 14:43

For Update 란?

Oracle 데이터베이스에서 사용되는 특별한 SQL구문이다. 이 구문은 SELECT 문장에서 사용되며, SELECT로 조회된 데이터에 대한 잠금(lock)을 설정하는 목적을 가진다. 주로 다음과 같은 경우에 사용된다.

 

 

 

1. 비관적 잠금(Pessimistic Locking)

For update 구문을 사용하여 특정 데이터 행을 조회하고, 그 행에 대한 잠금을 설정한다. 이 잠금은 다른 트랜잭션이 같은 데이터를 수정하거나 삭제하는 것을 막아준다. 다만, 이 방식은 다수의 트랜잭션에서 동시에 같은 데이터에 접근할 때 성능에 영향을 줄 수 있다.

 

 

2. 커서 안정성(Cursor Stability)

For update 구문을 사용하여 SELECT문에서 조회된 데이터에 대해 커서가 열린 상태에서 해당 데이터 행에 대한 잠금을 유지할 수 있다. 이는 트랜잭션이 커밋되거나 롤백될 때까지 해당 데이터를 보호하는 역할을 한다.

 

 

SELECT column1, column2, ...
FROM table_name
WHERE condition
FOR UPDATE;

여기서 table_name은 조회할 테이블 이름이고, condition은 선택적인 검색 조건

 

FOR UPDATE 절은 해당 SELECT 문장이 조회한 데이터에 대해 잠금을 설정한다. 이후 해당 트랜잭션이 커밋되거나 롤백될 때까지 해당 데이터에 대한 잠금이 유지된다.

 

이 구문을 사용할 때 주의할 점은 잠금을 설정한 데이터를 수정하거나 삭제하는 작업이 끝난 후에는 트랜잭션을 빠르게 커밋하거나 롤백해야 하며, 잠금을 오랫동안 유지하는 것은 다른 사용자의 데이터 접근성과 성능에 부정적인 영향을 미칠 수 있어 자주 사용은 좋지 않다고 한다.