by axiom Shared Pool Library Cache ROW Cache Soft Parsing Hard Parsing [2014.03.03]
오라클 데이터베이스를 관리하다 보면 데이터베이스 메모리를 이해하게 된다. 이와 같은 오라클 데이터베이스 메모리는 SGA라는 공간을 가지게 된다. 아마 오라클 데이터베이스를 처음 접하는 대부분의 사람들은 오라클 데이터베이스의 SGA라는 용어와 구조를 먼저 만나게 될 것이다.
그렇기 때문에 메모리 영역인 SGA는 익숙하게 여겨지는 부분이기도 하지만 좀더 깊이 파고들다 보면 오라클 데이터베이스에서 가장 어려운 부분의 하나임을 깨닫게 된다. 더 쉽게 오라클 데이터베이스에 접근할 수 있도록 지금부터 SGA에 대한 이야기를 시작해 본다.
먼저 이번 시간에는 오라클 데이터베이스 메모리인 SGA 영역에서 Shared Pool을 살펴본다. Shared Pool은 오라클 SGA를 구성하는 가장 기본적인 구성 요소에 해당한다. 따라서 Shared Pool의 이해는 오라클 메모리 구조를 이해할 수 있는 초석이 될 수 있다.
Shared Pool은 다음과 같이 두 가지 종류로 분류된다.
Shared Pool은 이와 같이 두 가지 영역으로 구분되며 2개의 영역은 결국 SQL을 파싱하기 위한 공간으로 구성된다. 그렇다면 이와 같은 Shared Pool은 무엇이 가장 중요할까? 그것은 SQL의 빠른 파싱일 것이다.
오라클은 SQL의 빠른 파싱을 위해 다음과 같은 두 가지 방식을 이용하게 된다.
이와 같은 구성을 가지는 Shared Pool은 파싱을 빠르게 하는 것이 목적이며 그러기 위해서는 수행된 SQL이 기존에 수행되어 파싱 정보가 Library Cache에 저장되어 있으며 Soft Parsing을 수행하게 되므로 빠른 파싱을 수행할 수 있다.
그렇기 때문에 Shared Pool의 최종 목적은 수행된 SQL에 대해 파싱 정보를 최대한 오랫동안 관리해 그 후에 동일한 SQL이 수행될 경우에 Soft Parsing을 수행하게 하는 것이다.
이와 같은 목적을 달성하기 위해 Library Cache와 ROW Cache가 존재하는 것이다. 그 중 ROW Cache는 파싱을 지원하는 역할을 수행하며 실제적인 파싱 정보는 Library Cache에 저장된다.
이와 같은 Library Cache는 LRU 알고리즘을 이용해 최근 가장 많이 사용된 파싱 정보를 계속 저장하게 되고 최근 적게 사용된 파싱 정보는 공간이 부족하면 버리게 된다.
또한 Soft Parsing을 최대한 빠르게 확인하기 위해 Hash Table을 이용하게 되고 SQL이 수행된 이후에 Hash Table을 검색해 해당 SQL이 파싱 정보가 저장되어 있는지를 빠르게 확인하게 된다.
이제부터 Shared Pool의 핵심 아키텍처인 Hash Table이 어떻게 구성되는지를 확인해 보자.
[그림 2]는 오라클 Shared Pool의 전체적인 아키텍처다. 우선 각각의 항목을 설명하면 다음과 같다.
Shared Pool은 이와 같이 여러 개의 요소로 구성되며 이들에 의해 작동된다. 각각의 구성요소가 어떻게 동작하는지는 다음 시간에 설명한다.
- 강좌 URL : http://www.gurubee.net/lecture/2696
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.