본문 바로가기

스터디/오라클 성능고도화 원리와 해법141

06.I/O 효율화 원리 - 08. I/O 효율화 원리 애플리케이션 측면에서의 I/O 효율화 원리를 요약하면 아래와 같습니다 (1)필요한 최소 블록만 읽도록 쿼리 작성 데이터베이스 성능은 I/O효율에 달려있고, 이를 달성하려면 동일한 레코드를 반복적으로 읽지 않고, 필요한 최소 블록만 읽도록 쿼리를 작성해야 합니다. (2)최적의 옵티마이징 팩터 제공 전략적인 인덱스 구성 DBMS가 제공하는 다양한 기능 활용 옵티마이저 모드 설정 통계정보의 중요성 정리하면, 옵티마이저모드를 포함해 적절한 초기화 파라미터를 설정해 주고, 적절한 통계정보를 수집해주는 것이 중요합니다. 그 다음 전략적인 인덱스 구성을 필수로 뒷받침해주고 기타 다양한 DBMS기능들을 적극 활용해 옵티마이저가 최적의 선택을 할 수 있도록 수단을 제공해 주어야 합니다. (3) 필요하다면, 옵티마이저 힌.. 2020. 2. 15.
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.