SGA - shared pool

Oracle DB 2019. 8. 31. 16:00

/* SGA = shared pool + large pool + db buffer cache + redo log buffer + ... */

shared pool = Library cache + DD(data dict.) cache + server result cache + reserved pool + other

 


  1. Library cache = Shared SQL area + Private SQL area (컴파일된 SQL, PL/SQL을 저장하는 곳)

 

    1.1 Shared SQL area: 썼던 SQL 코드 정보(execution plan)를 재사용할 수 있다면(cache hit) soft parse라고 하고, 새로 실행해야 한다면 SQL area를 새로 할당받아 사용하며 이를 hard parse라고 한다.

 

    1.2 Private SQL area: shared server를 사용할 때만 쓴다. 메모리를 할당받을 수도 있고, 메모리 재사용을 위해 shared SQL area의 내용을 포인팅할 수도 있다.

 

    참고: shared pool 메모리의 할당은 모두 LRU에 따라 해제된다.

 

 

  2. DD cache = DD를 너무 자주 사용하기 때문에 만들어진 DD만을 위한 메모리 공간.

 

    2.1 DD: DB tables, views(DB, 구조, 유저에 관련된) 정보. DD는 테이블 로우로 저장되어 있다.

 

 

  3. Server result cache = SQL query result cache + PL/SQL function result cache

 

    3.1 SQL query result cache: 쿼리에 대한 결과를 캐싱한다. select를 여러번 반복하면 첫 실행에 data block을 읽어서 처리하고, 이 캐시에 저장한 뒤 결과를 바로 가져다 줄 것이다. 저장된 결과를 위한 데이터가 변경되면 캐시는 invalidate 된다. + RESULT_CACHE hint를 줘서 이 캐시에 저장시킬 수 있다.

 

    3.2 PL/SQL function result cache: 주어진 파라미터에 대한 함수의 결과를 캐싱한다. 함수가 자신이 보는 데이터를 변경하면, 캐싱하지 않는다.

 

 

 4. Reserved pool = shared pool이 사용할 수 있는 길고 큰 메모리 공간들. 5KB 이상의 큰 object들을 따로 캐싱하여 fragmentation을 방지한다.

'Oracle DB' 카테고리의 다른 글

DB에 redo log가 필요한 이유  (0) 2020.04.06
SGA - DB buffer cache  (0) 2019.09.03
SGA - large pool, java pool, fixed SGA  (0) 2019.09.03
기본 구조  (0) 2019.08.31
참고 사이트  (0) 2019.08.18
Posted by sjo200
,