-
4장 2.1 프라이머리 키에 의한 클러스터링 인덱스데이터베이스/Real MySQL 8.0 2022. 8. 14. 18:40
먼저 주요 개념들에 대해서 정리하고 넘어가겠습니다.
키(Key)
데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성입니다.
키는 같은 의미를 가진 여러 단어로 치환될 수 있습니다.
키 = 애트리뷰트(Attribute) = 속성 = 컬럼(Column)
쉽게 말하면 표의 열에 해당합니다.
키 애트리뷰트 속성 컬럼 레코드 튜플 참고로 레코드(Record) = 튜플(Tuple)은 행에 해당합니다.
키 중에서도 특별한 성질을 가진 키들이 있는데, 그중에서 프라이머리 키만 알아보도록 하겠습니다.
프라이머리 키(Primary Key)
기본 키(프라이머리 키)는 어떤 레코드를 고유한 레코드로 만들어주는 중복될 수 없는 값(식별자)입니다.
주민등록번호나 ID, 신용카드번호와 같은 예를 들 수 있겠습니다.
어떤 김민수라는 사람이 있으면 이름이 같은 사람은 무수히 많을 것입니다.
심지어 생일까지 같은 사람이 있을 수 있겠죠.
하지만 김민수들은 주민등록번호에 의해 이 사람이 어떤 김민수인지 특정할 수 있습니다.
김민수를 고유하게 만들어 주는 것입니다.
인덱스(Index)
중요한 단어나 항목 같은 것들을 쉽게 찾아볼 수 있도록 목록으로 만들어 둔 것을 인덱스라고 합니다.
데이터베이스에서는 어떤 레코드를 쉽게 찾기 위한 레코드와 연결된 주소 목록을 말합니다.
데이터베이스에서 인덱스는 대상 테이블의 키를 기준으로 생성되며,
키의 값들이 중복이 없어야지만 인덱스로 생성할 수 있습니다.
따라서 프라이머리 키로 인덱스를 주로 생성하게 됩니다.
그중에서 임의의 순서대로 정렬된 인덱스를 클러스터(클러스터링) 인덱스라고 합니다.
InnoDB의 클러스터링 인덱스(Clustering Index)
- InnoDB는 기본적으로 데이터가 프라이머리 키를 기준으로 클러스터링(정렬)되어 저장됩니다.
- InnoDB의 세컨더리(보조) 인덱스들은 레코드의 주소 대신
프라이머리 키 값을 논리적인 주소로 사용하게 됩니다. - 프라이머리 키를 이용하여 탐색하는 것이 가장 효율적입니다.
- 따라서, 쿼리를 실행할 때 보조 인덱스보다 프라이머리 키를 참조할 확률이 높습니다.
- MyISAM에서는 클러스터 인덱스를 지원하지 않습니다.
'데이터베이스 > Real MySQL 8.0' 카테고리의 다른 글
4장 2.2 외래 키 지원 (0) 2022.08.14 4장 1.9 트랜잭션 지원 메타데이터 (0) 2022.08.11 4장 1.8 스레드 풀 (0) 2022.08.11 4장 1.6-7 쿼리 실행 구조 및 쿼리 캐시 (0) 2022.08.11 4장 1.4-5 플러그인 및 컴포넌트 (0) 2022.08.10 - InnoDB는 기본적으로 데이터가 프라이머리 키를 기준으로 클러스터링(정렬)되어 저장됩니다.