Shared Pool 개요
이번 글에서는 SGA(System Global Area)의 핵심 구성 요소중 하나인 Shared Pool에 대해서 자세히 정리해본다. Shared Pool은 모든 세션에 의해 공유되는 여러 하위 메모리 영역을 포함하고 있으며 이 영역들은 데이터 베이스 성능 튜닝에 중요한 역할을 한다.
Shared Pool의 구성
1. Data Dictionary Cache
- 데이터베이스 객체의 정의와 권한 정보를 저장한다.
- 데이터베이스의 테이블이나 컬럼이 존재하는지, 사용자에게 해당 객체에 대한 접근 권한이 있는지 확인하는데 사용된다.
- 복잡한 데이터베이스 환경에서 수천 개의 세션에서 동시에 발생하는 유사한 쿼리 요청을 효율적으로 처리하기 위해 필수적이다.
2. Result Cache
- 반복적으로 실행되는 쿼리의 결과를 저장하여, 동일 쿼리 요청 시 디스크에서 다시 읽지 않고 캐시에서 직접 결과를 반환한다.
- 함수 결과도 저장되어 있어, 동일한 결과를 반환하는 함수 호출 시에도 디스크 I/O 없이 처리가능하다.
- 최대 메모리에 도달하면 가장 적게 사용된 데이터를 삭제하고 새 데이터를 저장한다.
3. Library Cache
- SQL 쿼리나 PL/SQL 코드의 실행 계획과 같은 메타데이터를 저장한다.
- 데이터베이스는 테라바이트 단위의 데이터를 효율적으로 읽기 위해 여러 실행 계획을 생성하고 이를 라이브러리 캐시에 저장한다.
- 유사한 쿼리가 반복될 때 이미 생성된 실행 계획을 재사용하여 성능을 향상시킨다.
- 쿼리, 프로시저, 패키지 및 잠금 구조도 이곳에 저장된다.
Shared Pool의 작동 원리
- 쿼리 실행 시 먼저 Data Dictionary Chache를 확인하여 요청된 객체가 유효한지 검사한다.
- 라이브러리 캐시에서 해당 쿼리를 위한 실행 계획이 이미 생성되어 있는지 확인한다.
- 실행 계획이 존재하면, 그 계획을 사용하여 데이터를 처리한다.
- 결과 캐시에서 해당 쿼리의 결과가 존재하는지 확인하고, 결과가 있으면 바로 반환한다.
- 실행 계획이나 결과가 캐시에 없는 경우, 새로운 실행 계획을 생성하고 필요에 따라 디스크 또는 버퍼 캐시에서 데이터를 읽는다.
정리
Shared Pool은 효율적인 데이터 처리를 위한 여러 종류의 캐시를 관리한다.
* Udemy Oracle SQL Tuning Masterclass 정리
'DB&SQL' 카테고리의 다른 글
오라클 아키텍처 - DML 실행 프로세스 (0) | 2024.05.14 |
---|---|
오라클 아키텍처 - Buffer Cachey, Redo Log Buffer, Undo (0) | 2024.05.13 |
오라클 데이터 아키텍처 - PGA (0) | 2024.05.11 |
오라클 SQL튜닝 - 데이터베이스 블록 (0) | 2024.05.09 |
TIBERO - jdbc-11022 values are from incompatible data types (0) | 2024.05.08 |