db file scattered read: 대기: 다중 블록 물리 읽기, 보통 full table scan 또는 index fast full scan
Oracle의미
세션이 디스크에서 여러 블록(multiblock)이 읽히기를 기다린다. 보통 full table scan 또는 index fast full scan 중 발생한다.
원인
적절한 인덱스 부재로 인한 full table scan, 오래된 통계로 인한 잘못된 실행 계획, 매우 큰 테이블 스캔, 또는 선택된 접근 경로가 테이블 스캔으로 대체됨.
해결 방법
full scan을 수행하는 SQL 문을 식별하고 필요한 인덱스를 추가하거나 기존 인덱스가 사용되도록 한다. 통계를 갱신한다: DBMS_STATS.GATHER_TABLE_STATS. 대규모 스캔이 실제로 필요하다면 parallel query나 파티셔닝을 검토한다. DB_FILE_MULTIBLOCK_READ_COUNT와 스토리지 처리량을 검토한다.
같은 데이터베이스의 다른 항목
- enq: TX - row lock contention대기: 다른 트랜잭션이 보유한 행 수준 락에 세션이 블로킹됨
- log file sync대기: 커밋 시 LGWR이 redo를 디스크에 플러시하기를 세션이 기다림
- db file sequential read대기: 단일 블록 물리 읽기, 보통 인덱스 또는 테이블 조회
- buffer busy waits대기: 다른 세션이 이미 읽거나 수정 중인 버퍼에 대한 경합
- gc buffer busy대기(RAC): 인스턴스 간 전송 중인 cache fusion 블록에 대한 경합
- library cache lock대기: library cache 객체 핸들 경합(parse/DDL 직렬화)
- ORA-00604error occurred at recursive SQL level