메모리 구조: 공유 풀

Kyojun Jin·2022년 10월 4일
0

SQLP

목록 보기
5/34

공유 풀 (Shared Pool)

원본

공유 풀은 다양한 유형의 프로그램 데이타를 캐싱한다.

예를 들어 공유 풀은 파싱된 SQL 코드, 시스템 파라미터, 데이터 딕셔너리 정보를 저장하고 있다.

공유 풀은 데이터베이스에서 발생하는 모든 동작에 관여한다.

예를 들어 사용자가 SQL문을 실행하면 오라클 데이터베이스는 공유 풀에 접근한다.

공유 풀은 여러가지로 구성되어 있다.

주요 구성 요소는 다음과 같다.

라이브러리 캐시

라이브러리 캐시는 실행가능한 SQL과 PL/SQL 코드를 저장하는 공유 풀 메모리 구조이다.

라이브러리 캐시는 (프로세스들 사이에) 공유된 SQL과 PL/SQL 영역과 락과 라이브러리 캐시 핸들과 같은 제어 구조체를 가지로 있다.

공유 서버 아키텍쳐에선 프라이빗 SQL 영역을 가지기도 한다.

한 마디로, 사용자가 수행한 SQL문과 실행 계획, 저장 프로시저를 저장해 두는 캐시 영역이다.
사용자가 SQL을 실행하면 오류나 권한 등을 체크하고 최적화 과정을 거치며
마지막으로 SQL 실행 엔진이 이해할 수 있는 형태로 전환하게 되는,
이른바 하드 파싱 과정을 거치게 되는데,
이는 굉장히 무거운 작업이다. (특히 최적화 과정 때문에)
그래서 이 과정을 줄이기 위해, SQL과 프로시저를 캐싱해서 재사용한다.

SQL문이 실행되면 데이터베이스는 이전에 실행된 코드를 재사용하려 한다.
SQL문의 파싱된 버전이 라이브러리 캐시에 존재하고 공유될 수 있다면,
데이터베이스는 그 코드를 재사용한다.
이를 소프트 파싱, 혹은 라이브러리 캐시 힛(library cache hit)이라고 한다.

캐시에 없거나 공유될 수 없다면 (보안 상 private 영역에 있다면)
새로 실행 가능한 버전을 만들어야 하는데,
이를 하드 파싱 혹은 라이브러리 캐시 미스(library cache miss)라고 한다

데이터 딕셔너리 캐시

데이터 딕셔너리는 DB와 DB 구조, 그 사용자에 대한 메타 정보를 포함하는 테이블과 뷰의 집합이다.

오라클 DB는 SQL를 파싱하는 동안 데이타 딕셔너리에 자주 접근한다.

0개의 댓글