2010. 7. 26. 20:19
Transaction - PGA Layer DataBase이야기2010. 7. 26. 20:19
오라클 9i 이상 버전을 사용하는 사이트에서는 대부분 자동 SQL 실행 메모리 관리 기법을 사용하고 있다. 하지만, 모든 튜닝이 그러하듯이 해당 기능의 정확한 원리와, 이전의 수동 튜닝과의 차이 및 장단점을 이해하지 못한다면, 자동 튜닝이 제공하는 장점을 100% 활용하지 못하게 된다.
PGA
UGA
CGA
PGA는 프로세스와 관련된 공간이며, UGA는 세션관 관련된 공간이라고 할 수 있다.
PGA는 하나의 프로세스에 의해 전용으로 사용되는 공간이며, 프로세스 간에 공유되지 않는다.
PGA는 Fixed PGA와 Variable PGA로 구분된다. FIxed PGA에는 프로세스에 대한 기본 정보 및 variable PGA에 대한 포인터를 저장되며, Variable PGA는 Heap으로 구성된다.
UGA는 세션과 관련된 정보를 저장하기 위해 사용된다. UGA는 Fixed UGA와 Variable UGA로 구성된다. Fixed UGA에는 기본 정보 및 variable UGA포인터가 저장된다. Variable UGA에는 Heap으로 구성된다.
Variable UGA에는 1)open cursor 2) private SQL 3)package Status 4) Enable된 Role 5) Open되어 있는 database link정보 등이 저장된다.
수동 SQL 실행 메모리 관리시의 PGA 덤프
Session heap과 callHeap이 PGA Heap 내부에 존재한다.
자동 SQL 실행 메모리 관리시의 PGA 덤프
Session heap과 callheap이 각각 top uga heap 및 top call heap으로 존재한다.
프로세스 메모리 관련 파라미터
SORT_AREA_SIZE
소트를 위해 오랔ㄹ 프로세스가 최대로 사용할 수 있는 메모리영역을 나타낸다
SORT_AREA_RETAINED_SIZE
소트가 완료된 후에(유저 프로세스에게 resuslt set을 리턴 하기 전) 유지되는 variable UGA 영역을 나타낸다.
소트가 완료된 후에(유저 프로세스에게 resuslt set을 리턴 하기 전) 유지되는 variable UGA 영역을 나타낸다.
예를들어,SORT_AREA_SIZE는 10mb이고 SORT_AREA_RETAINED_SIZE는 1mb이라고 가정하자. 이러한 경우에 10mb가의 메모리 쇼트가 발생하면, variable UGA는10mb까지 다이나믹하게 증가하고, 소트가 완료되는 시점에서 vairableUGA는 1mb가로 줄어든다. 나머지 9mb는 PGA로 반납괴고 , 해당레코드들은 temp 테이블 스페이스에 기록된다. 이 때 temp 테이블스페이스에 기록하기 위해 direct write작업이 발생한다. 또한 유저에게 reuslt set을 리턴하기 위해서는 temp 테이블 스페이스에 기록된 9mb에 대한 direct read 작업이 발생한다.
'DataBase이야기' 카테고리의 다른 글
Connect by Prior (0) | 2011.08.23 |
---|---|
MS SQL SERVER 2005 EXPRESSION (0) | 2011.07.20 |
Transaction - Block Layer - ASSM (0) | 2010.07.23 |
Transaction - Block layer (0) | 2010.07.22 |
Transaction-BlockLayer (0) | 2010.07.19 |