1. WareValley
http://www.WareValley.com
Database Audit and Protection [ DB 접근통제 ]
Database Encryption [ DB 암호화 ]
Database Vulnerability Assessment [ DB 취약점 분석 ]
Database SQL Query Approval [ DB 작업결재 ]
Database Performance Monitoring and Management [ DB 성능관리 및 개발 ]
WareValley
Oracle Architecture
DB Buffer Cache
오렌지팀 윤석준 선임연구원
2. Database security and management, WareValley.
http://www.WareValley.com
Database Buffer Cache & Block 단위 I/O
사용자가 입력한 데이터를 Datafile에 저장하고
읽는 과정에서 거쳐가는 Cache 영역
블록 단위 I/O
- Oracle에서는 모든 것이 Block 단위로 I/O (Buffer, Datafile)
- INDEX : Single block read
Full Scan : Multiblock read
DBWR : Multiblock write
(Dirty Buffer Block 을 주기적으로 Datafile로 Write)
- 1 Row의 1 Column만 필요하더라도 1 Block 전체를 읽어야 한다.
=> I/O 성능과 튜닝을 하는데 있어서 가장 중요한 것은
Access하는 Block 수를 줄이는 것이다. (Record 수가 아님)
RECYCLE DEFAULT
Data Buffer Cache
3. Database security and management, WareValley.
http://www.WareValley.com
Buffer Block & Hash Bucket
Buffer Block : 바둑판 같은 배열에 Block 저장
Hash Bucket
Data Block 주소
Hash 함수 계산 결과
Latch
LRU Chain
Buffer 여유 공간이 없을 때
가장 사용한지 오래된
(Least Recently Used)
Block을 해제
Hash Chain에 여러 개의
Process가 동시에 접근하지
못하도록 하기 위한
Lock 매커니즘
Hash Chain
같은 Hash 값을 가지는
Block 들의
Linked List
4. Database security and management, WareValley.
http://www.WareValley.com
Data Buffer Cache Status
Data Buffer Cache
LRU 작동
설명
Dirty Buffer
Buffer에 캐싱된 후 변경되었지만, Disk에 기록되지 않은 버퍼.
Disk에 기록하는 순간 Free Buffer가 된다.
Pinned Buffer 현재 I/O 중인 버퍼 ( Lock 중인 버퍼 이기도 함)
Free Buffer
아직 Data가 없거나, 있더라도 지워도 되는 Buffer.
Data 변경이 일어나는 순간 Dirty Buffer가 된다.
5. Database security and management, WareValley.
http://www.WareValley.com
Buffer Lock & Buffer Pinning
Buffer Lock
Latch 획득 Lock 설정 Data Access
Latch 해제
Shared 모드 : 읽기만 할 때
Exclusive 모드 : 데이터 변경이 필요하거나, SELECT만 하더라도 Cleanout이 필요할때
Latch 획득 Lock 해제
Latch 해제
Pinned Buffer
Buffer Busy Waits
Latch 획득 Lock 시도 Buffer Lock Waiter List
Latch 해제
Buffer Pinning : DB Call이 유지되는 동안 Latch 획득 과정을 생략. Block Read 회수를 줄여주는 기능
하나의 DB Call (Parse Call, Execute Call, Fetch Call) 내에서만 유효