<오라클 성능 고도화 원리와 해법1> Ch06-05 Direct Path I/O
오라클 성능 고도화 원리와 해법1 - Ch06-05 Direct Path I/O 일반적인 블록 I/O는 DB 버퍼 캐시를 경유한다. 즉, 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터 변경도 버퍼 캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록(Dirty 버퍼 블록)들을 데...
오라클 성능 고도화 원리와 해법1 - Ch06-05 Direct Path I/O 일반적인 블록 I/O는 DB 버퍼 캐시를 경유한다. 즉, 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터 변경도 버퍼 캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록(Dirty 버퍼 블록)들을 데...
오라클 성능 고도화 원리와 해법1 - Ch06-04 Prefetch Prefetch 라는 용어는 오라클에서 여러 가지 의미로 쓰인다. 예를 들어, 한 번의 Fetch Call 로 Array 크기만큼 여러 개 레코드를 가져오는 것을 ‘Row Prefetch’ 라는 용어로서 설명하는 문서들도 있다. 본 절에서 설명하는 Prefetch는 테이블 Prefe...
오라클 성능 고도화 원리와 해법1 - Ch06-03 Single Block vs. Multiblock I/O I/O Call 수행 원리에 대해 살펴보자. 위 Call 통계를 보면, 버퍼 캐시에서 69개 블록을 읽으면서 그 중 64개는 디스크에서 읽었다. 버퍼 캐시 히트율은 7.24%다. 디스크에서 읽은 블록 수가 64개라고 I/O Call까지 6...
오라클 성능 고도화 원리와 해법1 - Ch06-02 Memory vs. Disk I/O (1) I/O 효율화 튜닝의 중요성 디스크를 경유한 입출력은 물리적으로 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰기 때문에 느리다. 반면, 메모리를 통한 입출력은 전기적 신호에 불과하기 때문에 디스크 I/O에 비해 비교할 수 없을 정도로 빠르...
오라클 성능 고도화 원리와 해법1 - Ch06-01 블록 단위 I/O 오라클을 포함한 모든 DBMS에서 I/O는 블록(Block)53) 단위로 이뤄진다. 블록 단위로 I/O 한다는 것은, 하나의 레코드에서 하나의 컬럼만을 읽으려 할 때에도 레코드가 속한 블록 전체를 읽게 됨을 의미한다. 이는 데이터베이스 I/O 성능과 튜닝 원리를 이해하는 데에 매우...
오라클 성능 고도화 원리와 해법1 - Ch06 I/O 효율화 원리 - 개요 3장 후반부에 밝혔듯이 데이터베이스 성능 튜닝의 3대 핵심 요소는 다음과 같다. 라이브러리 캐시 최적화 데이터베이스 Call 최소화 I/O 효율화 및 버퍼 캐시 최적화 지금까지 4장과 5장에서 라이브러리 캐시 최적화와 데이터베이스 Call 최소화 원리에 ...
오라클 성능 고도화 원리와 해법1 - Ch05-08 PL/SQL 함수 호출 부하 해소 방안 다시 한 번 강조하지만, 사용자 정의 함수는 <① 소량의 데이터 조회 시에만 사용>하는 것이 좋다. <② 대용량 데이터를 조회할 때는 부분범위 처리 가능한 상황에서 제한적으로 사용>해야 하며, 되도록이면 <③ 조인 또는 스칼라 서브쿼...
오라클 성능 고도화 원리와 해법1 - Ch05-07 PL/SQL 함수의 특징과 성능 부하 (1) PL/SQL 함수의 특징 오라클은 PL/SQL로 작성된 함수/프로시저의 이식성을 고려해, 오라클 서버가 아닌 Oracle Forms, Oracle Reports 같은 제품에서도 수행될 수 있도록 설계하였다. 그래서 PL/SQL로 작성한 함수와 프로시저를...
오라클 성능 고도화 원리와 해법1 - Ch05-06 페이지 처리의 중요성 클라이언트/서버 환경에서 대용량 데이터를 조회할 때는 커서를 닫지 않은 채 사용자 이벤트(스크를 바를 내리거나 ‘다음’ 버튼을 클릭하는 등)가 발생할 때마다 결과 집합을 Fetch 하도록 구현할 수 있었다. 하지만 웹 애플리케이션 환경에서는 커서를 계속 오픈한 채로 결과 집합을...
오라클 성능 고도화 원리와 해법1 - Ch05-05 Fetch Call 최소화 지금부터 설명할 Fetch Call 최소화 원리 내용을 요약하면 다음과 같다. 부분 범위 처리 원리 OLTP 환경에서 부분 범위 처리에 의한 성능 개선 원리 ArraySize 조정에 의한 Fetch Call 감소 및 블록 I/O 감소 효과 프로그램 언어에...