MySQL InnoDB Clustered Index 와 Secondary Index 정리
2022년 09월 30일
MySQL
📕 목차
들어가며
InnoDB 스토리지 엔진을 사용하는 테이블은 Clustered Index라고 불리는 특별한 인덱스를 가진다. Primary Key와 Clustered Index는 같은 말이라고 생각하면 된다. Clustered Index는 말 그대로 군집화되어 저장된 데이터
를 가리키는 인덱스이다. 쉽게말해, InnoDB 스토리지 엔진을 사용하는 테이블의 데이터는 디스크 공간 내에서 연속된 위치에 레코드가 기록된다는 것을 뜻한다. 이는, Range Scan 등에서 이점을 가진다.
성능에 대한 고찰
Clustered Index를 통해서 빠르게 데이터에 접근이 가능하다고 한다. 그 이유는, 디스크에 저장된 데이터를 페이지 단위로 읽는데 클러스터링이 되어있다면 페이지에 데이터들이 순차적으로 저장되어 있어서 매번 레코드를 찾기 위해서 디스크에 랜덤 액세스를 하지 않아도 되기 때문이다. 즉, 클러스터링이 되어있기때문에 데이터를 읽어오는 디스크 I/O가 최소화된다.
Secondary Index(보조 인덱스)와 Clustered Index와의 관계
보조인덱스는 보통 우리가 직접 정의하는 인덱스를 나타낸다. 테이블의 성능을 높이기 위해서 보조인덱스를 설정하곤 하는데 이 인덱스는 다음과 같은 특징을 가진다.
- 보조 인덱스의 각 레코드는
Primary Key 컬럼과 지정한 컬럼의 조합
으로 저장된다. - 보조 인덱스는 지정한 컬럼과 Primary Key를 포함하므로, Primary Key의 길이가 길면 공간을 더 많이 사용하므로
짧은 Primary Key
를 사용하는게 이점이 있다.