오라클 13

3장. 인덱스 튜닝

3.1 테이블 액세스 최소화 DBA(데이터파일번호 + 블록번호)는 디스크 상에서 블록을 찾기 위한 주소I/O 성능을 높이려면 버퍼캐시를 활용해야한다. 블록을 읽을 때는 디스크로 가기 전에 버퍼캐시부터 찾아본다. 읽고자 하는 DBA를 해시 함수에 입력해서 해시 체인을 찾고 거기서 버퍼 헤더를 찾는다 캐시에 적재할 때와 읽을 때 같은 해시 함수를 사용하므로 버퍼 헤더는 항상 같은 해시 체인에 연결됨 반면, 실제 데이터가 담긴 버퍼 블록은 매번 다른 위치에 캐싱되는데 그 메모리 주소값을 버퍼 헤더가 가지고 있음 해싱 알고리즘으로 버퍼 헤더를 찾고 거기서 얻은 포인터로 버퍼 블록을 찾아감. 인덱스로 테이블 블록을 액세스할 때는 리프 블록에서 읽은 ROWID를 분해해서 DBA 정보를 얻고 테이블을 Full Sca..

오라클/튜닝 2022.06.19

2장. 인덱스 기본

2.1 인덱스 구조 및 탐색 테이블에서 데이터를 찾는 두 가지 방법 1. 테이블 전체 스캔 2. 인덱스 이용 인덱스 튜닝의 두가지 핵심요소 1. 인덱스 스캔과정에서의 비효율 줄이기(인덱스 스캔 효율화, 소량만 스캔) 2. 테이블 액세스 횟수 줄이기(랜덤 액세스 최소화) 랜덤 액세스 최소화 > 인덱스 스캔 효율화 인덱스 구조(B+Tree) - 인덱스는 대용량 테이블에서 필요한 소량의 데이터만 빠르고 효율적으로 액세스 하기 위해서 사용하는 오브젝트이다. - 테이블에서 인덱스 없이 데이터를 검색하려면, 테이블 전체 스캔해야하는데 인덱스 이용시 일부만 스캔하고 멈출 수 있다. - 인덱스를 사용하면 Range Scan이 가능하다. - Root 블록과 Branch 블록의 각 레코드는 하위 블록에 대한 주소 값을 가..

오라클/튜닝 2022.06.18

1장. SQL 처리 과정과 I/O

1.1 SQL파싱과 최적화 SQL을 실행 전, 아래와 같은 최적화 과정을 수행한다. 1) SQL 파싱 SQL Parser가 파싱을 진행하는 단계 SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리를 생성하고, 문법적 오류가 없는지 확인한다. 의미상 오류가 없는지 확인한다. 2) SQL 최적화 옵티마이저가 활약하는 단계 미리 수집한 통계정보를 바탕으로 다양한 실행경로를 생성 및 비교한 후 가장 효율적인 경로를 선택한다. 3) 로우 소스 생성 옵티마이저가 선택한 실행경로를 실행 가능한 코드 형태로 포맷팅 하는 단계 로우 소스 생성기가 그 역할을 맡는다. 옵티마이저가 활약하는 단계에 대해서 요약한다. 1) 사용자로부터 전달 받은 쿼리를 실제로 실행할 실행계획들을 찾아낸다. 2) Data Dictionary ..

오라클/튜닝 2022.06.18