IT/CS 공부

[CS] 디스크 I/O 성능, 순차·랜덤 I/O

박소민 2025. 5. 28. 11:44

 

디스크 I/O란?


: 디스크에서 데이터를 읽고 쓰는 작업. 대부분의 시스템 병목은 이 과정에서 발생.

 

디스크 접근 시간의 구성

디스크에서 데이터를 가져오는 데 걸리는 시간

  • 탐색 시간: 디스크 헤드가 원하는 위치로 이동하는 시간
  • 회전 지연: 디스크가 돌아서 원하는 위치가 도달할 때까지 기다리는 시간
  • 전송 시간: 실제 데이터를 읽거나 쓰는 시간

→ HDD에서는 탐색 시간과 회전 지연이 오래 걸려 속도가 느림.

 

순차 I/O와 랜덤 I/O
  • 순차 I/O: 연속된 데이터 블록을 순서대로 읽는 방식.
    → 디스크 헤드를 크게 움직이지 않기 때문에 빠름.
  • 랜덤 I/O: 데이터가 흩어져 있어 매번 디스크 헤드를 이동해 읽는 방식.
    → 디스크 헤드를 자주 움직여 시간이 오래 걸림.
    즉, '얼마나 많이 디스크 헤드를 움직이느냐'가 성능 차이를 만든다.

 

SSD의 경우


SSD는 기계적 부품이 없어 탐색 시간이 거의 없다.
하지만 내부적으로 논리 주소를 물리 주소에 매핑하는 구조라 랜덤 I/O 성능이 순차 I/O보다 여전히 떨어질 수 있다.
→ SSD도 순차 I/O를 더 효율적으로 처리함.

 

 

데이터베이스에서의 적용
  • 클러스터링 인덱스를 사용한 레인지 스캔: 데이터가 정렬돼 있어 연속으로 읽음 → 순차 I/O
  • 세컨더리 인덱스를 사용한 조회: 데이터 위치가 흩어져 있음 → 랜덤 I/O
  • 풀 테이블 스캔: 테이블 전체를 한 번에 읽음 → 순차 I/O
    → 인덱스 사용이 항상 빠른 건 아니며, 상황에 따라 순차 스캔이 더 유리할 수 있음

 

성능 튜닝에서 중요한 점
  • SSD를 쓰더라도 랜덤 I/O는 비용이 크다.
  • 불필요한 랜덤 I/O를 줄이는 것이 쿼리 튜닝의 핵심.
  • fsync, flush 같은 동기화 작업이 잦으면 순차 I/O라도 느려질 수 있다.
  • 캐시가 장착된 RAID 컨트롤러를 쓰면 순차 I/O 성능을 개선할 수 있다.

'IT > CS 공부' 카테고리의 다른 글

[CS] 자바의 GC(Garbage Collection)  (2) 2025.06.09
[CS] 시스템 콜(System Call)  (0) 2025.05.29
[CS] URI, URL, URN  (1) 2025.05.28
[CS] CPU 스케줄링  (0) 2025.05.28
[CS] 방어적 복사(Defensive Copy)  (2) 2025.05.22