ORACLE

: ) 태영쓰 :: SGA Shared Pool

태영의 오라클 2017. 7. 23. 13:48

Shared Pool

 


 

Shared Pool (쉐어드 풀) SQLPL/SQLCursor(커서) execution plan(실행 계획) 을 저장 하여 빠르게 실행 될 수있도록 함.

 

Shared Pool의 공간 할당은 LRU(Least Recently Used) 알고리즘을 통해 관리. --> 최상의 성능으로 유지하려면 Size 관리와 SQL문의 재사용율을 높여야한다.

LRU List 는 사용한지 오래된 객체를 제거하고 요청된 메모리 용량을 충족하는 연속된 메모리를 할당 해줍니다.

ASMM(Automatic Shared Memory Manager) 이 활성화 되어 있지 않은 경우 충분한 연속 메모리가 없으면 ORA-04031에러를 발생합니다. --> 단편화

Ø  이 경우 메모리 추가나 ASMM활성화


또한 LRU 작업은 Latch(Oracle 내부 메모리보호) 또는 Mutax(OS level 메모리보호) 로 보호 됩니다.






Shared Pool의 크기를 늘리면 그만큼 보유할수 있는 Library Cache안의 Cursor의 양의 증가하기 때문에 재사용할 수 있는 시간이 증가한다. 따라서 Parse에 걸리는 시간이 줄어듬

 



Shared Pool 의 공간은 여러개의 Segment로 이루어 지며 Segment는 연속된 Chunk(청크)로 이루어 진다. 이때 Chunk는 비규칙 적이다.


 

 

 




 

Shared Pool  과 관련된

밑줄친 는 자주쓰이는 입니다.

 

V$SGASTAT, V$SGAINFO                 :  모든 SGA구조의 크기를 표시

V$LIBRARYCACHE                         : 라이브러리 캐시 관리에 대한 통계

V$LIBRARY_CACHE_MEMORY            : 각 네임스페이스의 메모리 사용에 대한 통계

V$SHARED_POOL_RESERVED            :  shared pool 공간

V$SQLSTATS                               : 다른 V$SQL 뷰 대신 사용되는 영향이 적은 뷰

V$SQL                                  : Shared SQL Area에 대한 통계

V$SQLAREA                            : 모든 공유 커서에 대한 전체 통계

V$SQLTEXT                               : 잘리지 않고 여러 행에 걸쳐 있는 전체 SQL 텍스트

V$DB_OBJECT_CACHE                   : 캐시된 데이터베이스 객체(패키지 포함), SQL문에서 참조하는 테이블및 동의어 등의 객체를 보여줌 / V$DB_OBJECT_CACHE.KEPT