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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
67 | 5장. 데이터베이스 Call 최소화 원리 | 휘휘 | 2010.07.05 | 6102 |
66 | 6장. I/O 효율화 원리 | 휘휘 | 2010.07.08 | 6404 |
65 | 6. V$SYSTEM_EVENT | 토시리 | 2010.06.14 | 6523 |
64 | 진행기록 | 운영자 | 2011.08.23 | 6588 |
63 | 8. 애플리케이션 커서 캐싱 | 토시리 | 2010.06.29 | 6612 |
62 | 3장. 오라클 성능 관리 | 운영자 | 2010.06.06 | 6699 |
61 | 6. 페이지 처리의 중요성 | 실천하자 | 2010.07.11 | 6820 |
60 | 2장. 트랜잭션과 Lock | 운영자 | 2010.06.01 | 6896 |
59 | 4장. 라이브러리 캐시 최적화 원리 | 휘휘 | 2010.06.28 | 6914 |
58 | 12. 데이터베이스 성능 고도화 정석 해법 | 휘휘 | 2010.06.14 | 7153 |
57 | 1. SQL과 옵티마이저 | 휘휘 | 2010.06.28 | 7218 |
56 | 부록 | 휘휘 | 2010.07.19 | 7238 |
55 | 2. Memory vs. Disk I/O | 휘휘 | 2010.07.12 | 7439 |
54 | 8. I/O 효율화 원리 | 휘휘 | 2010.07.19 | 7742 |
53 | 10. 대기 이벤트 | balto | 2010.05.30 | 8012 |
52 | 7. Response Time Analysis 방법론과 OWI | balto | 2010.06.13 | 8067 |
51 | 11. End-To-End 성능관리 | 휘휘 | 2010.06.14 | 8095 |
50 | 9. Snapshot too old | balto | 2010.05.30 | 8102 |
49 | 3. 비관적 vs. 낙관적 동시성 제어 | 휘휘 | 2010.06.07 | 8210 |
48 | 2. AutoTrace | 실천하자 | 2010.06.06 | 8599 |