이번 장에서는 인덱스에 대해서 알아보려고 한다.

인덱스는 데이터베이스 쿼리의 성능을 언급하면서 빼놓을 수 없는 부분이다. 인덱스의 종류나 특성에 대해서 간단히 살펴보도록 하자.


디스크 읽기 방식

인덱스에 대해서 알아보기 전에 인덱스와 관련된 용어인 랜덤 I/O, 순차 I/O에 대해서 먼저 알아보도록 하자.

디스크 읽기 방식들이기 때문에 디스크에 대한 이야기 부터 시작하도록 하겠다.

HDD와 SSD

컴퓨터에서 저장매체인 HDD와 SSD는 컴퓨터 부품 중에 가장 느린 부분이다.

그렇기에 디스크 I/O를 줄이는 것은 데이터베이스의 성능을 향상 시킬 수 있다.

HDD는 저장용 플래터(원판)를 기계적으로 회전하여 데이터를 읽어오지만, SDD는 위처럼 하지않고 플래시 메모리를 이용하여 데이터를 읽어온다.

순차 I/O의 상황에서는 SSD가 HDD보다 성능이 비슷하거나 조금 더 빠를 수는 있지만 랜덤 I/O의 상황이라면 SSD가 훨씬 빠르다.

그리고 DBMS에서는 순차 I/O의 비중보다는 랜덤 I/O의 비중이 훨씬 크기 때문에 SSD는 DBMS용 스토리지에 최적이라고 할 수 있는 것이다.

요즘에는 HDD보다는 SSD가 더 대중화된 상태이며 최근에는 DBMS용으로 사용할 서버에도 대부분 SSD를 채택하여 사용한다.

랜덤 I/O와 순차 I/O

랜덤과 순차 I/O에 어떤 차이가 있는지 예를 들어 한 번 살펴보자.

디스크 I/O는 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 번에 기록하느냐에 따라서 갈린다.

예시를 살펴봤을 때 순차 I/O가 랜덤 I/O보다 3배정도 빠른 성능을 낸다. 한 번의 헤드 움직임에 많은 데이터를 가져올 수 있는 순차 I/O가 유리한 것이다.