메뉴 건너뛰기

bysql.net

8. 블록 클린아웃

2010.05.31 07:27

휘휘 조회 수:12282


  • 블록 클린아웃(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 9. ASH(Active Session History) 실천하자 2010.06.14 15606
26 8. Statspack / AWR balto 2010.06.13 12766
25 7. Response Time Analysis 방법론과 OWI file balto 2010.06.13 8062
24 5. 오라클 Lock file 휘휘 2010.06.07 26365
23 4. 동시성 구현 사례 토시리 2010.06.07 10932
22 3. 비관적 vs. 낙관적 동시성 제어 휘휘 2010.06.07 8210
21 2. 트랜잭션 수준 읽기 일관성 file 휘휘 2010.06.07 19567
20 4. DBMS_XPLAN 패키지 balto 2010.06.06 10461
19 3. SQL 트레이스 file balto 2010.06.06 21175
18 3장. 오라클 성능 관리 운영자 2010.06.06 6694
17 2. AutoTrace 실천하자 2010.06.06 8597
16 1. Explain Plan 실천하자 2010.06.06 14663
15 2장. 트랜잭션과 Lock 운영자 2010.06.01 6895
14 6. 문장수준 읽기 일관성 file 토시리 2010.06.01 10432
13 1. 트랜잭션 동시성 제어 실천하자 2010.05.31 8631
12 5. Undo file 토시리 2010.05.31 18650
11 11. Shared Pool file 실천하자 2010.05.31 18511
» 8. 블록 클린아웃 휘휘 2010.05.31 12282
9 7. Consistent vs. Current 모드 읽기 휘휘 2010.05.31 10537
8 10. 대기 이벤트 balto 2010.05.30 8010