성능고도화54 06.I/O 효율화 원리 - 07. Result 캐시 버퍼 캐시에 위치하지 않고 Shared Pool에 위치합니다. 오라클은 11g부터 한번 수행한 쿼리 또는 PL/SQL 함수의 결과값을 Result 캐시에 저장 해두능 기능을 제공합니다. 1.DML이 거의 발생하지 않는 테이블을 참조하면서 2.반복 수행요청이 많은 쿼리에 이 기능을 사용하면 I/O 발생량을 현격히 감소시킬 수 있습니다. Result 캐시 메모리는 다음 두 가지 캐시 영역으로 구성됩니다. SQL Query Result 캐시 : SQL 쿼리 결과를 저장 PL/SQL 함수 Result 캐시 : PL/SQL 함수 결과값을 저장 아래는 Result 캐시를 위해 추가된 파라미터들입니다.result_cache_max_size를 관리자가 직접 지정하지 않으면 ,아래 규칙에 따라 오라클이 자동으로 값을 할.. 2020. 2. 15. 06.I/O 효율화 원리 - 06. RAC 캐시 퓨전 오라클 RAC모델은 공유 디스크 방식에 기반을 두면서 인스턴스 간에 버퍼 캐시까지 공유하는 캐시 퓨전 기술로 발전하였습니다. 튜닝이 잘 되지 않아 많은 블록 I/O를 일으키는 애플리케이션에서 RAC를 도입한다면 부하 분산은 커녕 단일 인스턴스 환경에서보다 더욱 심각한 성능저하 현상을 일으킬 수 있습니다.RAC는 글로벌 캐시라는 개념을 사용합니다. 즉 클러스터링 돼 있는 모든 인스턴스 노드의 버퍼 캐시를 하나의 버퍼 캐시로 간주하빈다. 따라서 필요한 데이터 블록이 로컬 캐시에 없더라도 다른 노드에 캐싱돼 있다면 디스크 I/O를 일으키지 않고 그것을 가져와 읽거나 쓸 수 있습니다. 모든 데이터 블록에 대해 마스터 노드가 각각 정해져 있고, 그 노드를 통해 글로벌 캐시에 캐싱돼 있는 블록의 상태와 Lock정보.. 2020. 2. 14. 06.I/O 효율화 원리 - 05. Direct Path I/O 일반적인 블록 I/O는 DB버퍼 캐시를 경유합니다. 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽습니다. 데이터의 변경도 버퍼 캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록들(dirty 버퍼 블록)을 데이터파일에 기록합니다. 재사용 가능성이 없는 임시 세그먼트 블록들을 읽고 쓸 때도 버퍼 캐시를 경유할 경우 오히려 성능이 더 나빠질 수 있습니다. 오라클은 이럴 때 버퍼 캐시를 경유하지 않고 곧바로 데이터블록을 읽고 쓸 수 있는 Direct Path I/O 기능을 제공합니다. 아래는 이 기능이 작동하는 경우입니다. - Temp 세그먼트 블록들을 읽고 쓸 때 - 병렬 쿼리로 Full Scan을 수행할 때 - nocache 옵션을 지정한 LOB.. 2020. 2. 13. 06.I/O 효율화 원리 - 04. Prefetch 오라클에서 한번의 Fetch Call로 Array 크기만큼 여러 개 레코드를 가져오는 것을 ‘Row Prefetch’라고 설명합니다. 하지만 지금 설명하는 Prefetch는 테이블 prefetch와 인덱스 prefetch를 말합니다. 오라클을 포함한 모든 DBMS는 디스크 블록을 읽을 때 곧이어 읽을 가능성이 높은 블록을 미리 읽어오는 Prefetch 기능을 제공합니다. 디스크 I/O가 비용이 크기 때문에 한번의 I/O Call을 통해 다량의 블록을 퍼 올릴 수 있으면 그만큼 성능향상에 도움이 되기 때문입니다. 앞 절의 Multiblock I/O도 prefetch 기능 중하나라고 할 수 있습니다. 지금 설명할 prefetch와 다른점은 한 익스텐트에 속한 인접한 블록들을 Prefetch 한다는 점입니다... 2020. 2. 12. 이전 1 2 3 4 5 6 7 8 ··· 14 다음