8.1 디스크 읽기 방식

디스크와 같은 기계식 장치의 성능은 CPU나 메모리의 전기적 특성을 띤 장치의 성능에 비해서 발전속도가 느렸다.

데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건일 때가 많다.

8.1.1 하드디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD)

기계식 장치인 하드디스크를 대체하기 위해 전자식 장치인 SSD가 나오게 되었다. 기존의 HDD에서 기존의 데이터 저장용 플래터를 제거하고 플래시 메모리를 장착하면서 속도가 빨라졌으나 여전히 CPU와 메모리에 비해선 느리다.

디스크 헤더를 움직이지 않고 한번에 많은 데이터를 읽는 순차 I/O의 경우에는 HDD가 더 빠른 경우도 있지만, 랜덤 I/O의 경우에는 SSD가 훨씬 빠르다.

데이터베이스 서버에서 순차 I/O의 비중이 크지 않고, 랜덤 I/O를 통해 작은 데이터를 읽고 쓰는 작업이 대부분이므로 SSD의 장점은 DBMS용 스토리지에 최적이라고 볼 수 있다.

8.1.2 랜덤 I/O와 순차 I/O

랜덤 I/O는 읽어야할 데이터로 헤더를 이동시킨 다음 데이터를 읽는 것을 의미한다.

디스크에 데이터를 쓰고 읽는 데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치를 옮기는 단계에서 결정된다.

순차 I/O는 랜덤 I/O보다 디스크 헤더를 옮기는 횟수가 적어서 작업의 부하가 적다. 그런데 데이터베이스에서는 작은 데이터를 빈번히 읽고 쓰는 작업을 진행하기 때문에 버퍼에 모아 처리하는 방식을 내장했다.

쿼리를 튜닝해서 랜덤 I/O를 순차 I/O로 바꿔서 실행할 방법은 그다지 많지 않다. 일반적으로 쿼리를 튜닝하는 것은 랜덤 I/O를 줄여주는 것이 목적이라고 할 수 있다. 여기서 랜덤 I/O를 줄인다는 것은 쿼리를 처리하는데 꼭 필요한 데이터만 읽도록 쿼리를 개선하는 것을 말한다.

⇒ 쿼리를 튜닝한다는 것은 데이터 접근을 최소화 시켜서 랜덤 I/O를 줄인다는 말 같다.