Dynamic SGA & Buffer Cache Advisory
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
www.onjprogramming.co.kr Oracle 9i 이전에는 SGA의 경우 인스턴스 시작 시 할당 받고 인스턴스 종료 시 반환하는 구조를 가졌습니다. 물론 운영 중에 SGA에 대한 변경은 불가능 했습니다. 9i에서 새로 소개돤 Dynamic SGA로 인해 인스턴스의 중단 없이 SGA에 대한 변경이 가능하게 되었습니다.
이것을 가능하게 하는 매개변수는 SGA_MAX_SIZE 이며 만약 이 값이 지정되지 않으면 DB_CACHE_SIZE, SHARE_POOL_SIZE등의 매개변수 값에 따라 지정된 만큼 정의 되어 집니다. Dynamic하게 메모리를 할당 하는 단위는 그래뉼(Granule)이며 Allocation, Deallocation 정보는 v$buffer_pool에서 확인 가능 합니다.
아래의 예를 ㅡ볼까요
C:\Documents and Settings\이종철>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 수 Dec 22 00:54:46 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
연결되었습니다.
SQL> show sga
Total System Global Area 93395628 bytes
Fixed Size 453292 bytes
Variable Size 67108864 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter system set shared_pool_size = 2000000;
시스템이 변경되었습니다.
SQL> alter system set db_cache_size = 10000000;
시스템이 변경되었습니다.
SQL> show sga
Total System Global Area 93395628 bytes
Fixed Size 453292 bytes
Variable Size 79691776 bytes
Database Buffers 12582912 bytes
Redo Buffers 667648 bytes
동적으로 크기를 바꿀 수 있는 요소는 Shared_Pool_Size, Large_Pool, DB_Buffer_Cache의 세가지 인데 이 Dynamic SGA 기능을 이용하여 여러 공간을 조절하는 것은 정확한 판단에 의해 이루어 져야 합니다. 이때 사용자가 참조 할 수 있는 통계 정보의 생성을 위해 Oracle 9i에서는 Dynamic SGA와 같이 Buffer Cache Advisory 기능을 제공 합니다.
ON : Advisory 기능이 enable 되고 CPU나 Memory 오버헤드 발생
OFF : Advisory 기능이 disable 되고 CPU나 Memory 오버헤드 없슴
READY : Advisory 기능이 disable 되나 Shared Pool의 메모리는 할당
또한 DB_CACHE_ADVISORY 기능이 활성화 되어 있는 내용을 확인 하기 위해서는 v$db_cache_advice의 advice_status column을 참조 합니다.
V$db_cache_advice를 이용하여 DB CACHE SIZE증가에 따른 Physical Reads에 대한 변화 정보를 얻을 수 있습니다. 예를 들어 DB Buffer Cache가 2배 증가 시 예측된 Physical Reads 값으로 인해 BUFFER CACHE HIT ratio에 대한 예측이 되므로 Dynamic 하게 DB BUFFER CACHE 크기를 정하는데 유용한 정보가 될 수 있습니다.
V$DB_CACHE_ADVICE View의 컬럼은 다음과 같습니다.
ID : Buffer Cache의 id (1 ~8)
Name : Buffer Cache의 이름
Block Size : 현재 Buffer Cache의 블록 크기
Advice_status : Buffer Cache Advisory 기능의 상태(ON,OFF,READY)
Size_for_estimate : Simulation에 사용 한 버퍼 캐시의 크기(단위 : KB)
Buffers_for_estimate : Simulation에 사용 한 Buffer Cache의 블록의 개수
Estd_physical_read_factor : (물리적 읽기 예상# / Buffer Cache 읽기#)
Estd_physical_reads : 물리적 읽기 예상치
SQL> select size_for_estimate "Cache Size(M)",
2 buffers_for_estimate "BUFFERS",
3 estd_physical_read_factor "Estd Phy Read Factor",
4 estd_physical_reads "Estd Phy Read"
5 from v$db_cache_advice
6 where name = 'DEFAULT'
7 and advice_status = 'ON';
Cache Size(M) BUFFERS Estd Phy Read Factor Estd Phy Read
------------- ---------- -------------------- -------------
4 500 1.1573 335925
8 1000 1.1548 335192
12 1500 1.1498 333747
16 2000 1.1281 327465
20 2500 1 290271
24 3000 1 290271
28 3500 .0107 3120
32 4000 .0107 3099
36 4500 .0106 3068
40 5000 .0106 3068
44 5500 .0106 3068
댓글 없음:
댓글 쓰기