본문 바로가기

반응형

분류 전체보기

(180)
Section4. Shared Pool 주요 성능 이슈 및 해결 방안 [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드]Shared Pool 성능 영향 주요 원인 Literal SQL매우 큰 PL/SQL 패키지 Shared Pool 성능 향상 제시 방법 DB 연동 Framework 사용 시 반드시 Static SQL 사용 유도. (Dynamic SQL 적용 예외 규정) DB 연동 Framework 사용 시 필수 사항 준수 (Close() 수행 전 ResultSet 등 먼저 Close 할 것 등 ) Shared Pool Size 를 충분히 키울 것 Library Cache, Data Dictionary Cache의 Hit Ratio는 95~99% 이상을 유지 할 수 있도록 노력 Libary Cache, Data Dictionary Cache 크기는 Shared Pool..
Section4. Shared Pool 개요와 SQL 공유 방안 [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] Shared Pool 구조 Shared Pool Library Cache Shared SQL Area SQL 또는 PL/SQL 코드를 모두 보관하는 장소. 사용 된 SQL 및 실행계획이 파싱 되어 보관 됨. Data Dictionary Cache 테이블/인덱스 등의 Object 정의, 사용자명, Role, 권한 등의 정보를 보관하는 장소. 주로 사용자가 해당 Obejct에 접근 가능 권한이 있는지 확인하는데 사용. Result Cache 사용자 SQL의 결과 값을 지속적으로 보관. 동일한 SQL이 요청될 경우 Buffer 나 Disk I/O Access 작업을 수행하지 않고 Result Cache에 있는 값을 그대로 반환. Reserved Pool..
Section4. SQL 실행 계획의 이해와 Hard Parsing, Soft Parsing의 차이 [출처: 오라클 성능 분석과 인스터스 튜닝 핵심 가이드] SQL의 이해 사용자 SQL은 Oracle 내부에서 상세 실행 계획으로 변경 Parsing 이란? 구문분석 분해와 분석 후 목적에 맞춰 구조를 결정하는 것 문장이 이루고 있는 구성 성분을 분해하고 분해 된 성분의 위계 관계를 분석하여 구조를 결정 하는 것. 파싱은 컴파일의 일부로서 원시 프로그램의 명령문을 입력으로 받아들여서 구문을 해석 할 수 있는 단위와 여러 부분으로 분할해주는 역할을 함 이러한 파서 역할을 하는 컴퓨터가 구문 트리(parse tree)로 재구성 하는 구문 분석 과정 Optimizer에 영향을 미치는 요소 사용컬럼, 연산자 형태 ex> =, Like, In, Is Not Null, NVL() SQL 형태 ex> Select * ..
Section4. Oracle Conventional Path IO와 Direct Path IO의 이해 [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] Conventional Path I/O vs Direct Path I.O Conventional Path I/O 서버 프로세스가 Buffer Cache를 거쳐서 Read(Select)/Write(DML) 수행 하는 I/O Buffer Cache에 Access 할 Blck이 없으면 Storage에서 해당 Block을 Access 하여 Buffer Cache에 Load 한 뒤 Buffer Cache에서 Block Access Index를 경유한 테이블 Access(Randon Access), 작은 테이블 Full scan Direct Path I/O 서버 프로세스가 Buffer Cache를 거치지 않고 직접 Storage에 Read/Write 수행하는..
Section4. Buffer Cache에 적재된 Block의 상태 및 Object 들의 정보 확인하기 [ 출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] Buffer Cache 내에 적재 된 Obejct 들의 정보 확인 V$BH는 실시간으로 Buffer Cache에 적재되어 있는 Block들에 대해 Object 정보 및 Block 상태 정보 제공 (DBA_OBJECTS와 조인하여 Object 명 조회) Column Description FILE# Datafile# (DBA_DATA_FILES에서 datafile 명 조회) BLOCK# Buffer block number CLASS# Class number STATUS Buffer의 상태 > free - Not currently in use > xcure - Exclusive > scure - Shared current > cr - Consisten..
Section4. Buffer Cache 크기 Advice 기능 이해 [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] V$DB_CACHE_ADVICE 설명 V$DB_CACHE_ADVICE 는 BUFFER CACHE의 크기 설정에 대한 Advice 정보 제공. DB_CACHE_ADVICE 초기화 파라미터가 ON 되어야 함. Column Description BLOCK_SIZE 해당 Buffer Pool의 Block Size ADVICE_STATUS ADVICE 기능 ON/OFF 여부. DB_CACHE_ADVICE 초기화 파라미터 ON/OFF SIZE_FOR_ESTIMATE 성능 예측 대상 Buffer Cache 크기 SIZE_FACTOR 현재 Buffer Cache 크기 대비 예측 Buffer Cache 크기 비율 BUFFERS_FOR_ESTIMATE 성능 예측 대..
Section4. Buffer Cache 크기 설정하기 [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] Buffer Cache 크기 설정 크기 설정 유형 DB_CACHE_SIZE SGA_TARGET SGA_MAX_SIZE MEMORY_TARGET MEMORY_MAX_TARGET 수동으로 크기 설정 Non Zero (ex> 20G) 0 0 0 0 ASMM으로 크기 설정 0 Non Zero (ex>12G) Non Zero (ex> SGA_TARGET 보다는 큼) 0 0 AMM으로 크기 설정 0 0 0 Non Zero (ex> 20G) Non Zero (ex> MEMORY_TARGET 보다는 큼) *ASMM: Automatic Shared Memory Management *AMM: Automatic Memory Management 지금은 ASMM 을 쓴다..
Section4. Buffer Cache 크기를 증가시키는 것은 언제나 성능을 향상 시키는가? [출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드] Buffer Cache를 증가 시키는 것은 언제나 성능 향상을 시키는가? 일정 수준을 넘어가게 되면 효과가 별로 없음. Buffer Cache를 Access 하는 작업은 높은(?) 비용을 소모 Buffer Cache를 활용하면 Random Access를 획기적으로 줄여 SQL 수행 성능을 크게 향상 시킬 수 있으나, Buffer Cache를 Access 하기 위해서는 메모리의 Latch나 Lock과 같은 비용이 소모 됨. 만일 대량의 Latch와 Buffer busy가 소모되어 이는 공유 메모리를 사용하기 위한 자원을 감당하기 어려운 임계점이 되면 전체 SQL 성능을 떨어뜨릴 수 있을 뿐만 아니라 시스템 안정성을 위협할 수 있음 악성 SQL들로 인..

반응형