메뉴 건너뛰기

bysql.net

8. 블록 클린아웃

2010.05.30 22:27

휘휘 조회 수:15543


  • 블록 클린아웃(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 7. Consistent vs. Current 모드 읽기 휘휘 2010.05.30 13564
26 6. RAC 캐시 퓨전 file 토시리 2010.07.18 13717
25 8. Statspack / AWR balto 2010.06.13 13738
24 7. PL/SQL 함수의 특징과 성능 부하 실천하자 2010.07.12 13769
23 1. Library Cache Lock file balto 2010.07.17 13947
22 7. Result 캐시 휘휘 2010.07.18 14095
21 4. Redo file 휘휘 2010.05.23 14332
20 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 15511
» 8. 블록 클린아웃 휘휘 2010.05.30 15543
18 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.27 16035
17 9. ASH(Active Session History) 실천하자 2010.06.13 16870
16 1. Explain Plan 실천하자 2010.06.06 17942
15 5. Fetch Call 최소화 file 휘휘 2010.07.05 18184
14 3. 버퍼 Lock [1] 휘휘 2010.05.23 18610
13 9. Static vs. Dynamic SQL [1] balto 2010.07.03 19767
12 1 장. 오라클 아키텍처 운영자 2010.05.19 21145
11 2. 트랜잭션 수준 읽기 일관성 file 휘휘 2010.06.06 21468
10 11. Shared Pool file 실천하자 2010.05.30 21741
9 5. Undo file 토시리 2010.05.30 21865
8 2. SQL 처리과정 file 휘휘 2010.06.27 23065