본문 바로가기
DB

HDD와 SSD, 랜덤 I/O, 순차 I/O

by 요섹남 2023. 9. 29.

HDD와 SSD

CPU의 처리 속도나 RAM과 같은 전기적인 원리로 동작하는 메모리의 I/O 속도는 매우 빠른 속도로 발전했다. 하지만 디스크 같은 기계적 장치는 CPU, RAM 대비 제한적으로 발전했다. 특히 HDD는 마치 LP판 같이 특정 위치에 디스크 헤드를 위치시켜 플래터(원판)을 회전시켜 읽거나 쓰는 원리로 매우 성능이 느리다. 이를 플래시 메모리로 보완하여 HDD 대비 속도가 빠른 SSD가 등장하였다.

 

메모리와 HDD의 처리 속도는 10만배 이상 차이난다. 반면 플래시 메모리를 사용하는 SSD와 메모리의 차이는 1,000배 가량 차이난다. 또한 순차 I/O 에서는 SSD가 HDD 대비 조금 빠른 수준이나, 랜덤 I/O에서는 SDD가 HDD 대비 훨씬 빠르다. DBMS에서 발생하는 대부분의 I/O는 랜덤 I/O이다.

책 Real MySQL 8.0에 따르면 위와 같은 차이로 HDD와 SDD의 초당 트랜잭션 처리 성능을 비교 했을 때 약 7배정도의 성능 차이를 보인다고 한다. 따라서 최근 DBMS용 서버는 대부분 SSD를 채택한다.

하지만 RAM과의 속도를 비교하였을 때는 아직 역부족이다. 즉, 여전히 저장 매체는 컴퓨터에서 가장 느린 부분이다. 전체 시스템의 속도는 전체 시스템의 구성 요소 중 가장 느린 쪽의 성능에 가장 큰 영향을 받는다.

디스크 헤드

디스크 헤드는 하드 디스크 드라이브에서 데이터를 읽고 쓰는 역할을 하는 부품 중 하나이다. HDD(하드 디스크 드라이브)는 회전하는 디스크(원판) 위에 자기식 기술을 사용하여 데이터를 저장한다. 디스크 헤드는 이 디스크의 표면에 위치하여 데이터를 읽거나 쓸 때 디스크와의 물리적인 접촉 없이 작동한다.

 

주요 역할

1. 데이터 엑세스 : 디스크 헤드는 디스크의 표면에서 데이터를 읽거나 쓰는 역할을 한다. 디스크의 표면은 자기적인 특성을 가지고있어서 헤드는 자기 신호를 사용하여 데이터를 읽고 쓴다. 

2. 데이터 위치 조정 : HDD의 디스크는 회전하면서 데이터를 읽고 쓰는데, 디스크 헤드는 디스크 표면에 대해 정확한 위치에 있어야 한다. 이를 위해 헤드는 정밀한 위치로 이동하면서 데이터에 접근한다.

3. 트랙 및 섹터 지정 : 디스크 헤드는 디스크 표면을 트랙이라 불리는 원형 경로로 나누어 읽고 쓰는데, 각 트랙은 여러 개의 섹터로 나뉜다. 헤드는 특정 트랙이나 섹터에 정확하게 위치하여 데이터를 엑세스한다.

4. 디스크 헤드의 이동 :  HDD에서 디스크 헤드의 이동은 헤드 액추에 의해 이루어진다. 헤드 액추는 헤드를 디스크의 표 으로 이동시키는데, 이때 정밀한 위치 제어가 필요하다.

 

헤드의 정확한 위치 조절은 HDD의 성능과 안정성에 큰 영향을 미치므로, 하드웨어 및 제어 회로에서 정교한 기술이 사용되고 있다. SSD와 같은 플래시 메모리를 사용하는 저장 장치는 이러한 물리적인 헤드 구조가 없어서 더 빠른 액세스 속도와 내구성을 제공한다.

 

랜덤 I / O (Random I / O)

특징

- 데이터의 위치를 임의로 선택하여 읽거나 쓰는 패턴이다.

- 특정 위치에 대한 액세스가 번번하지 않고, 데이터의 순서가 중요하지 않을 때 사용된다.

- 예를 들어, 데이터베이스에서 특정 레코드를 읽거나 수정하는 경우, 파일 시스템에서 임의의 위치에 있는 파일을 읽거나 쓸 때 랜덤I / O가 사용된다.

 

활용 예시

- 데이터베이스의 레코드 조회 및 갱신

- 파일 시스템에서 특정 위치의 파일 읽기 또는 쓰기

 

순차 I / O (Sequential I / O)

특징

- 데이터를 순차적으로 읽거나 쓰는 패턴이다.

- 데이터의 순서가 중요하며, 연속적인 영역에 대한 액세스가 효울적이다.

- 예를 들어, 파일의 처음부터 끝까지 읽거나 쓰는 경우, 대용량 데이터 파일의 선형적인 처리등에서 순차 I / O가 사용된다.

 

랜덤 I / O 와 순차 I / O를 선택하는 요소

접근 패턴 : 데이터에 대한 액세스 패턴이 무작위인지 순차적인지 고려한다.

성능 : 랜덤 I / O는 주로 디스크 헤드를 랜덤하게 이동시켜야 하므로 더 많은 시간이 소요될 수 있다. 반면에 순차 I / O는 데이터를 연속적으로 읽거나 쓰기 때문에 더 빠르게 처리될 수 있습니다.

캐싱 : 일부 시스템은 랜덤 I / O와 순차 I / O를 다르게 처리하며, 캐싱 전략이나 최적화에 영향을 미칠 수 있다.

 

데이터 액세스 패턴을 고려하여 랜덤 I / O와 순차 I / O중 어떤 것을 사용할지 결정해야 한다. 랜덤 I / O는 특정 위치에 대한 자주 발생하는 액세스에 유용하며, 순차 I / O는 데이터를 순차적으로 처리해야 할 때 효과적이다.

 

데이터를 3번 읽어야 한다고 가정할 때, 데이터 위치가 물리적으로 연속적이면 디스크 헤드를 한 번 이동시키면 되지만, 불연속적이라면 디스크 헤더를 3번 이동시켜야한다. 즉, Seek Time(디스크 헤드를 이동시키는 시간)이 사실상 디스크에 데이터를 읽고 쓰는데 걸리는 시간을 좌우한다. 따라서 디스크의 성능은 디스크 헤더의 이동 없이 얼마나 많은 데이터를 순차적으로 저장하느냐에 달림.