db file scattered Read
Event 정의
- I/O System 에 Multi Block I/O 를 요청하고 응답이 오기를 기다리는 Event
- P1 = file#
- P2 = block#
- P3 = blocks(실제로 읽은 블록 수)
- FTS, IFFS(Index Fast Full SCAN) 등에서 발생
SQL> SELECT * FROM v$bh where file#=<p1> AND block#=<p2>
Or
SQL> ALTER SYSTEM DUMP DATA FILE <P1> BLOCK MIN <P2> BLOCK MAX < P2+P3-1>
db file scattered read 대기 과다 원인
- 불필요한 Full Scan
- SQl Tuning, Index Tuning
- 인덱스 변경/ 삭제에 의한 기존 인덱스 사용 불가한 경우
- 인덱스 Invaild 에 의한 인ㄷ게스 사용불가 ( Alter table .. Move 시 )
- 잘못된 통계정보에 의한 Full Table Scan
- 비효율적인 SQL 작성에 의한 Full Table Scan
- 비효율적인 Segment 공간
- 100만건 Insert 후 100만건 Delete ==> FTS 시간은 100만건과 동일 ( HWM )
- Table Reorg 필요 : Alter Table.. Move ...
- I/O System 성능 저하
- Disk I/O 성능 개선
- Hot Spot 해소 : Logical Volumne Level Striping, ASM 등
- Multi Block I/O 와 db file sequential read
- Multi Block I/O 중간에 Single Block I/O 가 발생하는 경우
- Extent 경계를 만난 경우
- 적절한 Extent 크기 사용
- Uniform Size 5M 를 기본값으로 사용할 것을 권고
- Chained Row 를 만난 경우'
- Index 를 생성하는 경우
- MBRC
- DB_FILE_MULTIBLOCK_READ_COUNT
- Multi Block I/O 수행 시 한꺼번에 요청하는 블록 수를 의미
- MBRC 의 값을 클수록 좋다 ?
- 일반적으로 Full Scan 시 큰 값을 추천
- Logical Volumn 사용시 Stripe 크기와 관계 있음
- Multi Block I/O 크기 = N* Stripbe Size
- Stripe 크기를 초과하는 MBRC 는 큰 성능 개션 효과 없을 수 있음
- Test 를 통한 검증 필요
- File System, Logical Volun Manager, Storage 속성에 따라
- MBRC 와 Stripe Size
- MBRC = 8 , Block Size = 8K
- Stripe Size = 8 * 8 = 64 K