buffer busy waits: 대기: 다른 세션이 이미 읽거나 수정 중인 버퍼에 대한 경합
Oracle의미
세션이 다른 세션이 동시에 읽거나 수정하고 있는 버퍼 블록에 접근하기를 기다린다. 메모리 내 블록 경합이다.
원인
hot block에 대한 집중, 단조 증가 키를 가진 인덱스의 오른쪽 끝 경합, 부족한 freelist/비 ASSM 세그먼트, 또는 같은 블록에 대한 많은 동시 DML.
해결 방법
영향받는 세그먼트와 block class를 찾는다(v$session, v$segment_statistics, ASH). hot 인덱스 블록에는 reverse key 또는 hash 파티션 인덱스를 검토한다. ASSM(Automatic Segment Space Management)을 사용한다. 동시성이 높으면 INITRANS/PCTFREE를 늘린다. 애플리케이션 접근 패턴을 분산한다.
같은 데이터베이스의 다른 항목
- log file sync대기: 커밋 시 LGWR이 redo를 디스크에 플러시하기를 세션이 기다림
- db file sequential read대기: 단일 블록 물리 읽기, 보통 인덱스 또는 테이블 조회
- db file scattered read대기: 다중 블록 물리 읽기, 보통 full table scan 또는 index fast full scan
- gc buffer busy대기(RAC): 인스턴스 간 전송 중인 cache fusion 블록에 대한 경합
- library cache lock대기: library cache 객체 핸들 경합(parse/DDL 직렬화)
- ORA-00604error occurred at recursive SQL level
- ORA-01438value larger than specified precision allowed for this column