메뉴 건너뛰기

bysql.net

8. 블록 클린아웃

2010.05.31 07:27

휘휘 조회 수:12283


  • 블록 클린아웃(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가 완전히 해제, 완전 클린아웃



번호 제목 글쓴이 날짜 조회 수
27 5. Direct Path I/O file balto 2010.07.10 12190
» 8. 블록 클린아웃 휘휘 2010.05.31 12283
25 7. PL/SQL 함수의 특징과 성능 부하 실천하자 2010.07.12 12602
24 6. RAC 캐시 퓨전 file 토시리 2010.07.19 12631
23 10. V$SQL 실천하자 2010.06.14 12677
22 8. Statspack / AWR balto 2010.06.13 12767
21 1. Library Cache Lock file balto 2010.07.17 12802
20 7. Result 캐시 휘휘 2010.07.19 12969
19 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 14027
18 1. Explain Plan 실천하자 2010.06.06 14663
17 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.28 14670
16 3. 버퍼 Lock [1] 휘휘 2010.05.24 15230
15 2. SQL 처리과정 file 휘휘 2010.06.28 15343
14 9. ASH(Active Session History) 실천하자 2010.06.14 15607
13 5. Fetch Call 최소화 file 휘휘 2010.07.05 16849
12 1 장. 오라클 아키텍처 운영자 2010.05.20 17844
11 4. Array Processing 활용 file 휘휘 2010.07.05 18246
10 9. Static vs. Dynamic SQL [1] balto 2010.07.04 18345
9 11. Shared Pool file 실천하자 2010.05.31 18511
8 5. Undo file 토시리 2010.05.31 18653