DB&SQL

오라클 데이터 베이스 아키텍처 - Shared Pool

초롱불 2024. 5. 12. 12:16

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 정리