V. Multiple Buffer Pool
1) Multi Buffer Pool
- Data의 사용량과 사용빈도를 고려하여 Default Buffer Pool외에 다른 Buffer Pool을 선택가능
- V$BUFFER_POOL(X$KCBWBPD)
- Keep Buffer Pool
- 사용빈도가 높고 비교적 크기가 작은 테이블을 지정
- 재활용될 가능성이 높은 블록을 Buffer Pool에 유지시키기 위한 목적
- Recycle Buffer Pool
- 사용빈도가 낮은 반면 읽혀지는 데이터 양이 많은 테이블을 지정
- 재활용 될 가능성이 낮은 블록에 대한 Buffer Pool을 별도로 지정하여 Default Buffer Pool을 보호
2) Keep Buffer Pool
Keep buffer pool의 LRU list Algorithm
알고리즘 기본적인 LRU 리스트 알고리즘과 같다.
- 프리 버퍼를 탐색하기 위해 먼저 keep 버퍼 풀의 LRU 리스트의 보조 리스트에서 탐색을 한다.
- 프리 버퍼가 발견되면 블록을 버퍼에 올려 MRU end에 넣는다.
- 만약 프리 버퍼가 없다면 LRU end쪽에 있는 버퍼들을 재사용하게 된다.
참고
특정 객체를 keep 버퍼 풀에 오래 상주시키기 위해서는 CR 블록이 차지하는 크기까지 고려해야 한다.
따라서, keep 버퍼 풀의 크기는 keep 버퍼 풀을 사용하는 객체들의 크기를 합한 크기보다 크게 설정하는 것이 좋다.
3) Recycle Buffer Pool
Recycle buffer pool의 LRU list Algorithm
알고리즘 기본적인 LRU 리스트 알고리즘과 같지만 모든 블록이 멀티 블록 I/O 처럼 수행된다.
- 프리 버퍼를 탐색하기 위해 먼저 recycle 버퍼 풀의 LRU 리스트의 보조 리스트에서 탐색을 한다.
- 프리 버퍼가 발견되면 프리 버퍼에서 가져와 블록을 올리고 LRU end에 적재하여 수행된다.
- 만약 보조 리스트에 프리 버퍼가 없다면 LRU end쪽에 있는 버퍼들을 재사용하게 되고 다시 LRU end쪽에 넣는다.
Recycle 버퍼 풀의 알고리즘이 멀티 블록 I/O에서 수행하는 것과 같이 수행되기 때문에 자기가 사용한 버퍼를 재사용하게 되어있다. 하지만 재사용되기 때문에 recycle 버퍼 풀을 사용하는 객체들에 대해서는 버퍼를 재사용하기가 어렵다.
문서에 대하여
- 최초작성자 : 황종필
- 최초작성일 : 2010년 09월 18일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 (주)엑셈에서 출간한 'PRACTICAL OWI IN ORACLE 10G'를 참고하였습니다.*