인덱스 Batch I/O 배경 인덱스를 통한 Table Random Access는 Single Block I/O으로 작동하기에 엄청난 부하를 유발하는데, 심지어 버퍼 캐시 경유 비용 + 래치 경합까지 발생할 수 있어 로우가 많아 질수록 각종 Wait Event가 발생해 성능이 급격히 저하되었다. 이에 Table Random Access 성능 개선을 위해 오라클은 12c 이상부터 Batch I/O를 선보였다. 실행계획은 “TABLE ACCESS BY INDEX ROWID BATCHED “로 표시된다. Batch I/O 작동 방식 기존 인덱스를 이용해 버퍼 캐시에서 찾지 못하면 Disk I/O를 수행하였던 Single I/O 방식과 달리 Batch I/O는 테이블 블록 Disk I/O를 잠시 미뤄두고 일정량..
index scan Index Range Scan 선두 칼럼이 조건절에 존재할 때 사용할 수 있는 방식이다. 선두컬럼의 값이 작을 때 효과적이다. 불가조건 인덱스를 정상적으로 범위 검색할 수 없는 이유는 인덱스 스캔 시작 지점을 찾을 수 없기 때문이다. 때문에 인덱스를 Range Scan하지 못하는 대표적인 경우는 다음과 같다. 인덱스 액세스 조건절 칼럼 가공 LIK를 통한 중간값 조회 부정형 비교 조건일 때 소트 연산 생략 아래 공식에 따라 인덱스 구성 시 소트 연산이 생략 가능하다. ‘=’ 연산자로 사용한 조건절 컬럼 선정 ‘=’ 연산자 후에 정렬 순서대로 칼럼 인덱스가 존재하여야한다. ORDER BY 절에 기술한 컬럼 추가 반드시 정렬할 순서대로 인덱스가 이어져 구성되어야한다. ‘=’ 연산자가 아닌..
제한 ROWID 포맷 오라클 초기 버전부터 사용하던 ‘제한 ROWID 포맷’은 ROWID가 데이터파일 번호 + 블록 번호 + 블록 내 로우번호로 구성된다. 확장 ROWID 포맷 오라클 8 버전부터 사용하기 시작한 ‘확장 ROWID 포맷’은 ROWID가 오브젝트 번호 + 데이터파일 번호 + 블록 번호 + 블록 내 로우번호로 구성된다. 둘 중 어느 것을 사용할지는 오브젝트 유형에 따라 다르다.