11. Shared Pool
2010.05.31 08:19
▲ 오라클 구조
▲ 오라클 메모리 구조 - SGA(Shared Pool)
Shared Pool = Dictionary Cache + Library Cache
1. 딕셔너리 캐시 (Row Cache) - 오라클의 딕셔너리 정보를 저장하는 캐시영역
- 특징
- Row 단위로 Read / Write
- 오브젝트(테이블, 인덱스), 테이블 스페이스, 데이터 파일, 사용자, 제약, 시퀀스, DB Link 등 정보 캐싱
- 데이터 입출력을 빠르게 하기 위한 캐시영역
- 과정
- 객체 생성 → 딕셔너리 저장 → 로우 캐시 → 객체 사용
- 로우 캐시가 관리하는 엔트리 각각에 대해서 하나의 래치 할당
2. 라이브러리 캐시 - 사용자 SQL 및 실행계획이 저장된 캐시영역
오라클의 모든 동적 메모리를 관리하는 Heap Manager와 Library Cache Manager에 의해 관리
∵ Library Cache안에 저장된 Object를 가장 빠르게 찾고
저장하기 위한 방법
- 공유 SQL 영역
- 주어진 SQL 문장에 대해 Parse Tree와 실행 계획 소유
- 여러번 걸쳐 사용되는 SQL문장을 하나의 공유 SQL 영역에 저장하여 관리
- 전체 공유 풀이 꽉 차있을 시 LRU 알고리즘에 따라 메모리 사용 빈도가 낮은 SQL 제거
- PL/SQL 프러시저와 패키지
- SQL을 처리하는 것과 같이 PL/SQL 프로그램 Unit(Function, Procedure, Package, Anonymous Block) 처리
- SQL과 마찬가지로 구문 분석 후 컴파일 된 형태로 공유 SQL 영역에 저장
- 오라클은 프로그램 단위로 실행되는 세션에 할당된 값을 저장하기 위해 개별 SQL 영역에 메모리를 할당
→ 여기에는 지역변수, 전역변수, 패키지변수, 실행된 SQL에 대한 버퍼가 포함
→ 개별 사용자는 자신의 개별 SQL 영역에 분리된 복사본 소유
→ PL/SQL 프로그램의 구문분석 정보와 실행 계획은 공유 SQL 영역에서 사용
SQL 실행은 각 세션에 대한 개별 영역에 저장
→ 개별 사용자는 자신의 개별 SQL 영역에 분리된 복사본 소유
→ PL/SQL 프로그램의 구문분석 정보와 실행 계획은 공유 SQL 영역에서 사용
SQL 실행은 각 세션에 대한 개별 영역에 저장
※ 참고
- 소프트 파싱
- 전에 처리한 작업 중 같은 것이 있을 시 찾아서 파싱
- 하드 파싱
- 쿼리 구문 분석 및 오류 및 실행 권한 확인, 최적화(Optimization) 과정을 통한 실행 계획 생성
- 실행엔진이 가독 가능한 포맷팅
- 딕셔너리 캐시 ☞ 하드파싱 시 사용
- 라이브러리 캐시 ☞ 소프트파싱 시 사용
- SHARED_POOL_SIZE : 파라미터로 크기 설정
- 9i 이후는 (동적 파라미터로 변경 가능)
alter system set shared_pool_size = 100 M;
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
7 | 2. Cursor_Sharing | balto | 2010.07.17 | 10255 |
6 | 7. Result 캐시 | 휘휘 | 2010.07.19 | 12997 |
5 | 8. I/O 효율화 원리 | 휘휘 | 2010.07.19 | 7753 |
4 | 부록 | 휘휘 | 2010.07.19 | 7243 |
3 | 6. RAC 캐시 퓨전 | 토시리 | 2010.07.19 | 12637 |
2 | 3. Deterministic 함수 사용 시 주의사항 | 실천하자 | 2010.07.19 | 10607 |
1 | 진행기록 | 운영자 | 2011.08.23 | 6597 |