기술 정보
home
채널 소개
home

Tibero의 Current 모드 읽기와 예제_SELECT FOR UPDATE 수행

문서 유형
기술 정보
분야
관리/환경설정
키워드
SELECT
1 more property

개요

SELECT FOR UPDATE 구문처럼 조회에 해당하지만 데이터에 잠금을 수반하는 경우에도 Current 모드 읽기가 발생한다는 점을 간단한 예제를 통해 설명합니다.

방법

SELECT FOR UPDATE 수행

SELECT FOR UPDATE는 SELECT 구문이지만, 락을 걸어 데이터를 보호하려는 목적을 갖고 있어 DML처럼 Current 모드 읽기를 유발합니다.
아래는 emp1 테이블에서 사번이 7788인 행을 대상으로 SELECT FOR UPDATE 구문을 실행한 결과입니다.
SQL> set autot on SQL> select * from emp1 where empno = 7788 for update; EMPNO ENAME DEPTNO SAL ------ ----------- ---------- --------- 7788 TIBERO7788 8 7546894 1 row selected.
SQL
복사
SQL ID: 3uncmqnwhd2m1 Child number: 124 Plan hash value: 2721807346 Execution Plan -------------------------------------------------------- 1 FOR UPDATE (Cost:3, %%CPU:0, Rows:1) 2 INDEX (UNIQUE SCAN): PK_EMP1_EMPNO (Cost:3, %%CPU:0, Rows:1) Predicate Information -------------------------------------------------------- 2 - access: ("EMP1"."EMPNO" = 7788) (0.000) NAME VALUE ------------------- ------ db block gets 2 consistent gets 6 physical reads 0 redo size 158 sorts (disk) 0 sorts (memory) 0 rows processed 1
SQL
복사
db block gets = 2는 Current 모드 읽기가 발생했음을 의미합니다.
이는 단순 조회가 아닌, 해당 행에 잠금을 걸기 위해 실제 블록에 접근한 동작으로 해석할 수 있습니다.
consistent gets = 6은 일반적인 논리적 읽기 (Undo 기반 일관성 읽기 등)로, SELECT 수행 과정에서 발생한 블록 접근을 의미합니다.