ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] 예약 풀과 대형 풀의 기능
    공부 이야기/ORACLE 2024. 5. 25. 14:27

    1. SGA 영역에서 Redo Buffer, Data Buffer Cache나 Shared Pool 라이브러리 캐시, 데이터 딕셔너리, 세션 캐시를 위주로 확인하다보니 저 두 영역이 무엇을 하는지가 궁금해졌다. 분명히 SGA 영역 안에 있는데 말이지

     

    2. 먼저 SQL문이 수행될 때 라이브러리 캐시에 있는지 확인하는 소프트 파싱 작업을 수행할 때를 고려해보자

    - 실제 운영환경에서는 여러 개의 세션에서 여러 개의 SQL문을 동시다발적으로 수행된다.

    - 제한적인 메모리 자원을 여기저기서 사용할 것인데 만약 큰 용량의 SQL문이 수행된다면?

    - 그만큼 메모리 할당량도 커질 것이다. 다른 세션에 영향을 줄 수 있다는 뜻이다.

    - 이를 방지하기 위해 예약 풀과 대형 풀에서 해당 작업을 대신 수행하는 것이다.

    - 라이브러리 캐시를 예로 들었지만, Shared I/O Pool에서 수행되는 I/O 작업도 마찬가지이다.

    - 병렬 I/O나 Batch I/O가 발생하면 다른 I/O에 비해 상대적으로 큰 메모리를 요구하게 된다.

    - 이 때도 예약 풀과 대형 풀이 나서서 효과적으로 작업을 지원해준다.

     

    3. 예약 풀 (Reserved Pool)

    : 대규모 메모리 할당 요청을 처리하기 위해 예약된 메모리 영역

    1. 큰 메모리 요청 처리: 예약 풀은 공유 풀(Shared Pool)에서 대규모 메모리 할당 요청을 처리하는 데 사용. 일반적으로 공유 풀에서 메모리를 할당할 때 메모리 조각화(fragmentation)가 발생할 수 있는데, 예약 풀은 이러한 큰 메모리 할당 요청을 별도로 처리하여 조각화를 줄임
    2. 메모리 조각화 방지: 공유 풀에서 작은 크기의 메모리 조각들이 남아 있을 때, 큰 메모리 할당 요청을 만족시킬 수 없을 수 있습니다. 예약 풀은 이러한 경우를 대비해 미리 확보된 메모리를 사용하여 큰 메모리 요청을 효율적으로 처리
    3. 성능 향상: 예약 풀을 사용하면 메모리 할당 실패로 인한 성능 저하를 방지. 특히, 큰 SQL 문이나 PL/SQL 패키지를 실행할 때 메모리 부족으로 인한 오류를 줄여줌

     

    4. 대형 풀 (Large Pool)

    : 예약풀과 비슷하게 대용량 메모리 할당을 위해 설계된 선택적 메모리 영역이지만, 기본 SGA와는 독립적이며, 주로 백업 및 복구 작업, 세션 메모리(특히 MTS - Multi-Threaded Server 환경), 그리고 메시지 큐잉을 위한 메모리를 제공

    1. 비효율적인 메모리 관리 방지: 대형 풀은 백업 및 복구 작업(RMAN), I/O 서버 프로세스, Oracle Streams, 그리고 세션 메모리(특히 공유 서버 모드에서)를 위한 메모리 할당을 위해 사용. 이를 통해 공유 풀의 메모리 조각화를 방지
    2. RMAN 작업 지원: RMAN(Recovery Manager) 백업 및 복구 작업에서 대형 풀이 사용. 이는 대규모 메모리 할당이 필요한 작업을 지원하며, 공유 풀에서 메모리 할당을 분리하여 백업 및 복구 작업의 성능을 향상
    3. I/O 서버 프로세스: I/O 서버 프로세스가 사용하는 메모리를 대형 풀에서 할당하여, 공유 풀의 메모리 사용을 줄이고 I/O 작업의 효율성을 높임
    4. Oracle Streams: Oracle Streams에서 대량의 데이터를 처리할 때 필요한 메모리를 대형 풀에서 할당. 이는 Streams 작업의 성능을 최적화
    5. 세션 메모리 할당: 공유 서버 환경에서 각 클라이언트 세션의 UGA(User Global Area, PGA 하위에 배치)를 대형 풀에서 할당. 이는 많은 사용자가 연결된 경우에도 공유 풀의 메모리 사용을 최소화

     

    5. 설계

    - 대규모 운영환경에서 발생할 수 있는 메모리 부족 현상을 고려하고 사전에 방지하기 위해 고안된 개념이라고 생각한다.

     

    6. 예상 질문

    - 메모리 단편화와 발생할 수 있는 상황을 설명하고 Oracle DBMS에서는 이를 어떻게 해결하고 있나요?

Designed by Tistory.