"Real MySQL" 책을 정리한 포스팅 입니다.
1. 인덱스
- 데이터를 빠르게 찾아주는 자료구조
- 특정 컬럼값을 정렬하여 보관합니다. (저장될 때마다 값이 항상 정렬됨)
- key-value 형식
Key
Primary Key
- 행을 대표하는 컬럼들로 이루어진 인덱스 (유일성)
- Not Null
- 노드 구성: 키 값-레코드 주소 값
Secondary Key
- Primary Key와는 다른 컬럼 조합으로 생성된 인덱스 (유일성 필수 X)
- 더 빠르게 검색하기 위한 기능 (보조적인 역할)
- Nullable
- 노드 구성: 키 값-PK값
알고리즘
B-Tree 알고리즘
- 원래의 컬럼 값을 이용해 인덱싱하는 알고리즘 입니다.
Hash Index 알고리즘
- 컬럼 값을 가공해서 인덱싱하는 알고리즘 입니다. (해시 계산)
- 매우 빠름
- 부분 검색 or 범위 검색 X
- 주로 인 메모리 기반의 데이터베이스에서 사용합니다.
데이터 중복 여부
Unique Index
- 중복된 값을 허용하지 않도록 강제하는 인덱스
- Null 값 허용
Non-Unique Index
- 중복된 값을 허용
- Null 값 허용
문제점
대용량 데이터 시, 성능 느려짐
- 인덱스는 특정 컬럼의 모든 값을 저장
- 적재된 데이터가 많아질수록, 인덱스 크기도 커지므로 찾는 속도가 느려짐
생성 시, 많은 시간 소요
- CPU & Disk I/O 리소스를 많이 사용함
- 읽기 (인덱싱할 컬럼의 모든 데이터) - 정렬 - 저장
데이터 수정 작업이 많으면 성능 저하 가능성 높음
- 데이터 수정 시, 인덱스도 함께 업데이트 되어야 함
- 인덱스 유지보수 비용이 증가하여, 데이터베이스 성능이 저하될 수 있음
'Database > Mysql' 카테고리의 다른 글
[Real MySQL] 15-1. 데이터 타입: 문자열 (0) | 2023.11.26 |
---|---|
[Real MySQL] 8-2. 인덱스: 구현 (B-Tree) (0) | 2023.11.25 |
[Real MySQL] 5-1. 트랜잭션과 잠금 (0) | 2023.11.24 |
[Real MySQL] 4-4. 아키텍쳐: MySQL 로그 파일 (1) | 2023.11.24 |
[Real MySQL] 4-2. 아키텍쳐: InnoDB 스토리지 엔진 아키텍쳐 (0) | 2023.11.24 |