인덱스를 사용하는 것으로 수천만건의 데이터에서 원하는 데이터를 매우 빠르게 찾아낼 수 있다.하지만 그를 넘는 대량의 데이터에서, 인덱스가 오히려 느린 경우가 있다. 테이블 스캔이 블록 엑세스하는 과정익스텐트 맵을 통해 읽을 블록들의 DBA 정보를 얻는다. → 같은 익스텐트 == 같은 데이터 블록 => block I/O 용이하다! 인덱스로 테이블 블록 엑세스하는 과정리프 블록에서 읽은 ROWID를 분해해서 DBA(디스크 주소 정보) 를 얻고, I/O 성능 개선을 위해 버퍼 캐시를 활용하기 위해 버퍼 캐시를 확인하고, 읽으려는 DBA를 해시 함수에 입력해서 hash chain을 찾고 여기서 버퍼 헤더를 찾는다. **캐시 적재시 매번 같은 해시 함수 쓰기에 버퍼 헤더는 항상 같은 해시 체인에 연결되지만, 실..
Index Range ScanIndex Range Scan은 B*Tree 인덱스의 가장 일반적이고 정상적인 형태의 엑세스 방식이다.수직적 탐색 후 필요함 범위(Range)만 수평적 탐색한다.인덱스 스캔 범위와 테이블 액세스 횟수를 줄이는 것이 성능 향상의 길이다.Index Full ScanIndex Full Scan은 수직적 탐색 없이 오직 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식이다.최적의 인덱스가 없을때, 차선으로 선택된다.Index Full Scan 효용성선두 컬럼이 조건절에 없으면 옵티마이저가 Index Full Scan을 고려한다.만약 테이블이 고용량이면 인덱스 활용을 고려하지 않을 수 있다.인덱스 스캔 단계에서 대부분 레코드를 필터링하고 아주 일부만 테이블을 액세스하는 상황..
데이터 저장 구조index, table, LOB 컬럼 모두 하나의 세그먼트로 표현된다.특정 컴포넌트가 너무 커지면, 해당 세그먼트가 EXTENT를 추가로 할당 받는다. EXTENT는 연속된 블록의 모음이다. 또한 db 테이블을 파티션하면, 하나의 파티션이 하나의 세그먼트로 들어갈 수 있다. multi block IO → 한번에 인접한 블록 여러개 가져오기 == 같은 extent 내에 있는 블록 가져오기 이다( 다른 extent에 있는 것 까지 가져오기 불가능) library cache: 쿼리 캐싱. 소프트 파싱을 위함buffer cache: 실제 데이터 캐싱. 굳이 disk에서 데이터 가져오지 않고 캐싱된 데이터 가져올 수 있다 만약 1,2,3,4,5,6,7 번 블록이 있는데, 캐시에 1,5,7만 들어..