인덱스를 통한 Table Random Access는 Single Block I/O으로 작동하기에 엄청난 부하를 유발하는데, 심지어 버퍼 캐시 경유 비용 + 래치 경합까지 발생할 수 있어 로우가 많아 질수록 각종 Wait Event가 발생해 성능이 급격히 저하되었다.
이에 Table Random Access 성능 개선을 위해 오라클은 12c 이상부터 Batch I/O를 선보였다.
실행계획은 “TABLE ACCESS BY INDEX ROWID BATCHED “로 표시된다.
기존 인덱스를 이용해 버퍼 캐시에서 찾지 못하면 Disk I/O를 수행하였던 Single I/O 방식과 달리 Batch I/O는 테이블 블록 Disk I/O를 잠시 미뤄두고 일정량 모은 뒤 일괄적으로 처리하게되었다.
기존 single I/O 방식에서는 인덱스 만으로 결과 집합의 정렬이 보장되었으나, Batch I/O 작동시 이러한 방식의 결과 집합을 보장하지 않게 되었다.