메뉴 건너뛰기

bysql.net

8. 블록 클린아웃

2010.05.31 07:27

휘휘 조회 수:12280


  • 블록 클린아웃(Block Cleanout)
    트랜잭션에 의해 설정된 Row Lock 을 해제하고 블록 해더에 커밋 정보를 기록하는 오퍼레이션

  • Row Lock
    레코드의 속성(Lock Byte)로 관리, 로우 해더라부터 블록 해더에 있는ITL엔트리를 가리키는 포인터

  • 오라클의 블록 클린아웃
- Delayed 블록 클린아웃
- 커밋 클린아웃 (=fast 블록 클린아웃)


(1) Delayed 블록 클린아웃

  • 트랜잭션이 갱신한 블록 개수가 총 버퍼 캐시 블록 개수의 1/10을 초과할때 사용
  • 수행작업
  1. ITL 슬롯에 커밋 정보저장
  2. 레코드에 기록된 Lock Byte 해제
  3. Online Redo에 Logging

  • 블록을 읽는 과정에서 ACTIVE 블록( 다른 트랜잭션이 발생시킨 변경사항에 대한 커밋 정보가 ITL에 기록되지 않은상태) 이면
    읽기전에 먼저 블록 클린아웃을 시도

(2)  커밋 클린아웃 (= FAST 블록 클린아웃)



  • OPS 환경에서 과도한 ping이 발생하는 문제를 해결하기 위해 도입


OPS(Oracle Parallel Server)
: 9i 이전 버전,, datafile 쓰기 전까지 buffer 내용을 각노드끼리 공유디스크를 통해 주고 받음 (ping)

RAC(real application cluster)
: 9i 이후 버젼 , cache fusion, 노드간 일종의 고속네트웍을통해 필요내용을 주고 받음


  • 트랜잭션이 갱신한 블록 개수가 버퍼 캐시 블록 개수의 1/10을 초과하지 않을 경우 커밋 시점에 곧바로 블록 클린 아웃을 수행

  • 커밋 시점에 ITL 슬롯에 커밋 정보만 저장하고 로우 헤더에 기록된 Lock Byte는 해제하지 않음  ( 로깅을 수행하지 않기위함)
  • 해당 블록을 갱신하려고 Current 모드로 읽는 시점에 Lock Byte 를 해제하고 완전 클린아웃을 수행후 Online Redo 로깅을 수행
  • Delayed 로깅 블록 클린아웃 (Delayed Logging Block Cleanout) 이라고 부름


(3) ITL 과 블록 클린아웃


 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0006.016.00000378  0x008009f9.03f0.18  --U-    1  fsc 0x0000.0028b73e
0x02   0x0005.01d.0000038c  0x0080015a.02ef.05  C---    0  scn 0x0000.0028b691
0x03   0x0005.00d.000003c4  0x00801a0b.01d1.1d  C-U-    0  scn 0x0000.006770c0


0x01:

Lck=1 (로우 헤더에 Lock Byte가 해제되지 않음)
Scn/Fsc : FSC (Fast 클린아웃상태)
Flag: U


  • Fast 클린아웃 - 곧바로 재사용될수 없고 쓰기 작업을 위해 블륵을 읽히는 순간 Lock Byte를 해제하고 재사용


0x02: )
Flag: C
Scn/Fsc: Scn 정확한 커밋 시점 정보

  • Dlayed 블록 클린아웃에 의해 클린아웃된 경우 - 01번에서 Lock byte가 해제된상태 (ITL 언제든 재사용가능)


0x03:
Flag: C-U-
Scn/Fsc: scn
- 추정된 커밋 SCN(Upper bound commit number)


  • 추정된 커밋 SCN - Lock Byte가 완전히 해제, 완전 클린아웃



번호 제목 글쓴이 날짜 조회 수
67 Front Page file 운영자 2010.05.17 154864
66 4. Prefetch file balto 2010.07.10 28432
65 5. 오라클 Lock file 휘휘 2010.06.07 26365
64 2. DB 버퍼 캐시 file 휘휘 2010.05.24 21916
63 3. SQL 트레이스 file balto 2010.06.06 21175
62 1. 기본 아키텍처 [1] file 휘휘 2010.05.23 19898
61 2. 트랜잭션 수준 읽기 일관성 file 휘휘 2010.06.07 19566
60 5. Undo file 토시리 2010.05.31 18648
59 11. Shared Pool file 실천하자 2010.05.31 18510
58 9. Static vs. Dynamic SQL [1] balto 2010.07.04 18342
57 4. Array Processing 활용 file 휘휘 2010.07.05 18238
56 1 장. 오라클 아키텍처 운영자 2010.05.20 17840
55 5. Fetch Call 최소화 file 휘휘 2010.07.05 16839
54 9. ASH(Active Session History) 실천하자 2010.06.14 15604
53 2. SQL 처리과정 file 휘휘 2010.06.28 15338
52 3. 버퍼 Lock [1] 휘휘 2010.05.24 15225
51 1. Explain Plan 실천하자 2010.06.06 14662
50 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.28 14658
49 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 14022
48 7. Result 캐시 휘휘 2010.07.19 12969