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

[친절한 SQL] 1.3.4 시퀀셜/랜덤 액세스 본문

친절한 SQL 튜닝

[친절한 SQL] 1.3.4 시퀀셜/랜덤 액세스

Kihwane 2026. 5. 11. 10:06

테이블 또는 인덱스 블록을 액세스 (읽는) 방식은 시퀀셜 액세스와 랜덤액세스 두가지 방식이 있다.

 

Sequential 액세스
- 논리적 또는 물리적으로 연결된 순서에 따라 차례대로 Block 읽는 방식

- 세그먼트에 할당된 익스텐트 목록을 Segment Header Extent 정보를 Map으로 가지고 있고
 
익스텐트 맵은 익스텐트의 번째 블록 주소 값을 갖는다.
-
해당 Extent Block부터 연속해서 읽게되면 Sequential Access 가능하게 되는 것이고, 이를 Full Table Scan 이라고 한다.

 

 

Random Access

- 어떤 파일내에 있는 특정한 레코드를 찾을 때 다른 레코드를 순차적으로 읽지 않고 원하는 레코드만을 직접 액세스 하기 때문에 데이터를 빨리 검색할 있음 (데이터의 절재적인 면적이 중요하고, index Clustering Factor (CF) 따라서 어떤 경우는 Full table Scan 빠를 수도 있다.
-
레코드 하나를 읽이 위해 블록씩 접근하는 방식임

 

 

Index Range Scan은 여러 ROWID를 반환한다.

인덱스에서 조건에 맞는 ROWID들을 찾고, 각 ROWID 대해 데이터 블록을 개별적으로 접근한다.

랜덤 I/O 디스크든 메모리든 데이터 블록 위치가 분산되어있으면 매번 위치이동이 필요하고 블록하나를 읽고 다른 블록으로 "점프" 해야 한다.

 

📉 손익분기점(Break-Even Point)

건수 액세스 방식 성능 경향
적은 건수 (선택도 높음) Index + ROWID 빠름 (랜덤 I/O 적음)
일정 건수 이상 Index + ROWID vs Full Scan 비용 역전 구간
많은 건수 (선택도 낮음) Full Table Scan 더 빠름 (시퀀셜 I/O 효율)

* 인덱스 손익 분기점은 낮은 5~20% 에서 결정됨
 

Table Full Scan 시퀀셜 액세스 반면, 인덱스 ROWID 이용한 테이블 액세스는 랜덤 액세스 방식임