Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

DBDBDEEP

1.3.6 Single Block,Multi Block I/O 본문

친절한 SQL 튜닝

1.3.6 Single Block,Multi Block I/O

Kihwane 2026. 5. 16. 19:59

Single Block I/O

I/O call 한번에 블록씩 요청해서 메모리에 적재하는 방식을 'Single Block I/O' 라고 한다.

 

SELECT * FROM emp WHERE empno = 7788;
*
인덱스에서 7788 ROWID 찾고
*
해당 ROWID 있는 단일 블록을 접근   Single Block I/O

💡 다만 해당 건수가 많으면 그에 해당하는 여러 Block 찾아가야 한다. 이러면 Full Scan보다 성능이 나빠질 있을 것이다.


Single Block I/O Oepration
- 인덱스 루트 블록을 읽을

- 인덱스 루트 블록에서 얻은 주소 정보로 브랜치 블록을 읽을
-
브랜치 블록에서 얻은 주소 정보로 리프 블록을 읽을
- 인덱스 리프 블록에서 얻은 주소 정보로 테이블 블록 읽을

 

한번에 여러 블록씩 요청해서 메모리에 적재하는 방식을 'Multi Block I/O' 라고 한다.

Multi Block I/O
-
번의 I/O 요청으로 여러 블록을 동시에 읽는 방식
-
캐시에서 찾지 못한 특정 Block 읽으려고 I/O Call 디스크 상에 블록과 '인접한' 블록들을 한꺼번에 읽어 캐시에
 
미리 적재를 하는 기능이다.
- DBMS
블록 사이즈가 얼마건 간에 OS 단에서는 보통 1MB 단위로 I/O 수행


 

SQL> show param db_file_multiblock_read_count

 

NAME                                             TYPE         VALUE                                  

----------------------------  -------- ----------------------------------------

DB_FILE_MULTIBLOCK_READ_COUNT INT32         32
 

일반적으로 OS Level I/O 단위가 1MB, 오라클 레벨 I/O 단위가 8KB 이므로, 위의 파라미터를 128 설정하면 담을 있는 최대한 담게 되는 것이다.

 

SQL> show param DB_BLOCK_SIZE
 

NAME                          TYPE            VALUE                                  

------------------ ---------- -------

DB_BLOCK_SIZE                INT32       8192

Table Full scan Multiblock I/O 반면, 인덱스 ROWID 이용한 테이블 액세스는 Single Block I/O 방식