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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
27 | 8. 애플리케이션 커서 캐싱 | 토시리 | 2010.06.29 | 6622 |
26 | 9. Static vs. Dynamic SQL [1] | balto | 2010.07.04 | 18382 |
25 | 10. Dynamic SQL 사용 기준 | balto | 2010.07.04 | 8653 |
24 | 11. Static SQL 구현을 위한 기법들 | 실천하자 | 2010.07.05 | 12139 |
23 | 4. Array Processing 활용 | 휘휘 | 2010.07.05 | 18301 |
22 | 1. Call 통계 | 실천하자 | 2010.07.05 | 10467 |
21 | 5. Fetch Call 최소화 | 휘휘 | 2010.07.05 | 16891 |
20 | 5장. 데이터베이스 Call 최소화 원리 | 휘휘 | 2010.07.05 | 6106 |
19 | 2. User Call vs. Recursive Call | 토시리 | 2010.07.07 | 9063 |
18 | 3. 데이터베이스 Call이 성능에 미치는 영향 | 토시리 | 2010.07.07 | 11674 |
17 | 6장. I/O 효율화 원리 | 휘휘 | 2010.07.08 | 6428 |
16 | 4. Prefetch | balto | 2010.07.10 | 28467 |
15 | 5. Direct Path I/O | balto | 2010.07.10 | 12215 |
14 | 8. PL/SQL 함수 호출 부하 해소 방안 | 토시리 | 2010.07.11 | 14054 |
13 | 6. 페이지 처리의 중요성 | 실천하자 | 2010.07.11 | 6826 |
12 | 2. Memory vs. Disk I/O | 휘휘 | 2010.07.12 | 7451 |
11 | 3. Single Block vs. Multiblock I/O | 휘휘 | 2010.07.12 | 9181 |
10 | 7. PL/SQL 함수의 특징과 성능 부하 | 실천하자 | 2010.07.12 | 12622 |
9 | 1. 블록 단위 I/O | 토시리 | 2010.07.12 | 9401 |
8 | 1. Library Cache Lock | balto | 2010.07.17 | 12815 |