일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Queue
- 프로그래머스 문자열 정렬
- Programmers
- 클라이언트
- 스프링부트 도커로 배포
- lv0
- 스택
- 프로그래머스 풀이
- 큐
- StringTokenizer
- 자바
- java
- 백준
- 백준 N과 M 자바
- 알고리즘
- 프로그래머스
- 오름차순 정렬
- Lv1
- Stack
- COS Pro
- 문자열
- 삼각형의 완성조건
- 프로그래머스 자바
- SWEA
- 이진수 변환
- index of
- 버퍼
- 스프링부트 도커
- 스프링부트 도커 배포
- lv2
- Today
- Total
mun dev
[Oracle] For update 란? 사용법 본문
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 문장이 조회한 데이터에 대해 잠금을 설정한다. 이후 해당 트랜잭션이 커밋되거나 롤백될 때까지 해당 데이터에 대한 잠금이 유지된다.
이 구문을 사용할 때 주의할 점은 잠금을 설정한 데이터를 수정하거나 삭제하는 작업이 끝난 후에는 트랜잭션을 빠르게 커밋하거나 롤백해야 하며, 잠금을 오랫동안 유지하는 것은 다른 사용자의 데이터 접근성과 성능에 부정적인 영향을 미칠 수 있어 자주 사용은 좋지 않다고 한다.
'DB > Oracle' 카테고리의 다른 글
[Oracle] 분석 함수(Analytic Function) (0) | 2024.03.18 |
---|---|
[PL SQL] 함수(Function) 사용법 (0) | 2024.02.27 |
[PL SQL] 프로시저(PROCEDURE) 사용법 (0) | 2024.02.27 |
[PL SQL] PL SQL이란? PL SQL 블록(BLOCK)의 구조 (1) | 2024.02.27 |
[Oracle] 오라클 제약 조건 변경 (생성, 추가, 삭제) (1) | 2024.02.16 |