Oracle 데이터베이스에서 데이터를 읽고 처리할 때, Consistent Mode(일관성 모드)와 Current Mode(현재 모드) 두 가지 방식이 존재합니다.
이 모드는 쿼리의 실행 방식과 데이터 일관성을 유지하는 방법에 따라 결정됩니다.
Consistent Mode(일관성 모드)는 쿼리 실행 시점의 일관된 데이터를 제공하는 방식입니다.
즉, 쿼리가 시작된 시점의 SCN(System Change Number, 변경 번호) 기준으로 데이터를 반환합니다.
-- 세션 1: 데이터 조회 (Consistent Mode)
SELECT * FROM employees WHERE emp_id = 100;
-- 세션 2: 데이터 변경 (Current Mode)
UPDATE employees SET salary = 5000 WHERE emp_id = 100;
COMMIT;
✔ 결과:
SELECT
는 변경된 데이터가 아니라 쿼리 시작 시점의 데이터(SCN 기준) 반환salary = 5000
)는 이후 새로운 트랜잭션에서 조회 가능Current Mode(현재 모드)는 가장 최신 상태의 데이터를 읽고 수정하는 방식입니다.
즉, 데이터가 변경되면 가장 최신 값을 반환하며, UNDO를 사용하지 않음.
SELECT ... FOR UPDATE
문장은 Current Mode로 실행되어 최신 데이터를 잠금(Locking)할 수 있음-- 세션 1: 데이터 변경
UPDATE employees SET salary = 5000 WHERE emp_id = 100;
-- 세션 2: 같은 데이터를 조회 (현재 변경된 값이 반영됨)
SELECT salary FROM employees WHERE emp_id = 100 FOR UPDATE;
✔ 결과:
SELECT ... FOR UPDATE
는 Current Mode에서 실행되므로 최신 데이터(salary = 5000
) 반환비교 항목 | Consistent Mode (일관성 모드) | Current Mode (현재 모드) |
---|---|---|
데이터 조회 시점 | 쿼리 실행 시작 시점의 데이터 반환 (SCN 기준) | 변경된 최신 데이터 반환 |
UNDO 사용 여부 | ✅ UNDO 사용 (변경 전 데이터 조회) | ❌ UNDO 사용하지 않음 |
DML 적용 여부 | ❌ DML(UPDATE, DELETE)에는 적용되지 않음 | ✅ DML에서 사용됨 |
트랜잭션 일관성 유지 | ✅ 모든 테이블이 동일한 시점의 데이터를 반환 | ❌ 트랜잭션 변경 사항이 즉시 반영됨 |
사용되는 SQL 문 | SELECT , SELECT JOIN , SELECT WHERE | UPDATE , DELETE , SELECT ... FOR UPDATE |
변경된 최신 데이터 조회 가능 여부 | ❌ 불가능 (쿼리 시작 시점 기준) | ✅ 가능 (가장 최신 데이터 조회) |
성능 | 비교적 낮음 (UNDO 데이터 필요) | 빠름 (최신 블록 바로 조회) |
✔ 핵심 차이점
SELECT
문에서 기본적으로 사용됨UPDATE
, DELETE
, SELECT ... FOR UPDATE
에서 사용됨SELECT
문이 실행될 때 트랜잭션이 변경해도 영향을 받지 않도록 해야 하는 경우📌 예제: 일관된 데이터 조회
SELECT * FROM employees WHERE department = 'IT';
UPDATE
, DELETE
같은 DML 작업이 수행될 때 현재 값 기준으로 실행SELECT ... FOR UPDATE
를 통해 최신 데이터를 잠금 처리하여 동시 수정 방지📌 예제: 최신 데이터 조회 및 잠금
SELECT salary FROM employees WHERE emp_id = 100 FOR UPDATE;
✅ Consistent Mode는 쿼리 실행 시점의 일관된 데이터를 제공하며, UNDO를 사용하여 이전 상태를 복구
✅ Current Mode는 가장 최신 데이터를 즉시 반영하며, DML 문장과 SELECT … FOR UPDATE에서 사용
✅ 트랜잭션 충돌을 방지하고 성능을 최적화하려면 상황에 맞게 두 모드를 적절히 활용해야 함 🚀
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…