오라클 기본 구조와 원리 (2)

sua_ahn·2024년 10월 1일
0

DBMS

목록 보기
11/11

SQLP 노트 정리본 📚

6. 문장 수준 읽기 일관성

: 단일 SQL 수행 중 다른 트랜잭션이 데이터를 변경해도 일관성 있는 결과 리턴

1) 커밋되지 않은 값 읽기 허용 X
= Dirty Read 방지

2) 커밋 시점에 따라 다른 결과 리턴 X

Consistent 모드 블록 읽기

of Multi-Version Read Consistency Model

📌 블록

1) Current Block : 원본 → Only one

2) CR Block : 복사본 → 여러 버전 OK

📌 SCN (System Commit Number)

: 시점 정보를 담은 전역변수

1) 블록 SCN
: 블록의 마지막 변경 시점 in Block Header
(변경시킨 트랜잭션의 커밋 SCN)

2) 커밋 SCN
: 트랜잭션 별 커밋 번호 in ITL Slot

3) 쿼리 SCN
: 쿼리가 실행되는 시점의 DB 상태 (스냅샷 SCN)

📌 규칙

블록 SCN이 쿼리 SCN보다 작거나 같은 블록만 읽을 수 있다.
(SCN 확인과정 필요)

A. Current Block SCN ≤ 쿼리 SCN
= 쿼리가 시작된 이후로 변경 없음
→ Current Block Read 즉, CR 생성하지 않고 그대로 읽음
*Current 모드 읽기 아님 주의!

B. Current Block SCN > 쿼리 SCN
= 쿼리가 시작된 이후로 변경 있음
→ CR Cloning 후, 쿼리 SCN보다 낮은 마지막 Committed 시점으로 Undo (ITL슬롯의 UBA 사용)

C. Current Block Status = Active
= 레코드에 Lock Byte 설정은 돼있는데, ITL슬롯에 아직 커밋 정보 기록 안됨
= 커밋 시 바로 클린아웃하지 않기 때문에, 갱신중이라고 단정할 수 없음
→ 블록 클린아웃 시도 ⇒ A or B

 


7. Consistent VS Current 모드 읽기

1) Consistent 모드로 갱신할 경우 (가정)
→ Lost Update 발생

2) Current 모드로 갱신할 경우 (다른 DBMS의 경우)
→ 갱신/삭제 중 다른 트랜잭션에 의해 갱신/삭제 대상이 변할 수 있음

3) Consistent 모드로 읽고, Current 모드로 갱신할 경우 (가정)
→ 잘못된 이중 갱신 발생

4) Consistent 모드로 갱신대상 식별하고, Current 모드로 갱신할 경우⭐
→ 갱신대상의 rowid 추출하고, 이 rowid와 조건절에 모두 해당되는 대상을 건건이 갱신

⇒ 갱신중에 갱신대상 범위에 새로 들어오지 못함
But, 갱신중에 갱신대상에서 제외될 수 있음

 

스칼라 서브쿼리는 일반적으로 Consistent 모드로 읽음
UPDATE A SET COL = A.a + (SELECT b FROM B)
But, 갱신해야할 테이블의 컬럼을 참조하는 경우 Current 모드로 읽음
UPDATE A SET COL = (SELECT A.a + B.b FROM B)

 


8. 블록 클린아웃

: 로우 Lock 해제 + 블록헤더에 커밋 정보 기록
  Lock Byte -------------> ITL Entry

1) Delayed Block Cleanout

: 트랜잭션이 갱신한 블록 개수가 총 버퍼캐시 블록 개수의 1/10을 초과할 때, 커밋 이후 해당 블록을 액세스하는 첫 쿼리에 의해 완전히 정리

  • ITL Slot에 커밋 정보 저장
  • Lock Byte 해제
  • Online Redo logging

2) 커밋 클린아웃 = Fast Block Cleanout

: 트랜잭션이 갱신한 블록 개수가 총 버퍼캐시 블록 개수의 1/10을 초과하지 않을 때, 커밋시점에 곧바로 불완전한 클린아웃을 수행
(ITL Slot에 커밋 정보만 저장)

→ 해당 블록을 갱신하는 다음 트랜잭션에 의해 완전히 클린아웃
즉, Current 모드로 읽는 시점에야 Lock Byte를 해제하고 Delayed Redo logging

 


참고 도서 : 오라클 성능 고도화 원리와 해법 1

profile
해보자구

0개의 댓글