db index

이성보·2021년 2월 7일
0

DB indexing에 대해 아는가? 안다면 개념 및 사용법을 설명
(검색을 위해) 임의의 규칙대로 부여된, 임의의 대상을 가리키는 무언가. 2학년 3반 21번, 870909 - 1xxxxxx, 서울시 송파구 신천동 루터회관 05510
ex) List objects ...
objects.get(index)

Index in Database

데이터베이스는 내가 원하는 데이터를 어떻게 찾아오는 걸까?

왜 데이터가 많아질수록 점점 느려질까?

왜 조인만 수행하면 느릴까?

왜 쿼리가 느릴까?

인덱스의 종류

Clustered vs Non-Clustered

Meaning

Cluster : 군집
Clustered : 군집화
Clustered Index : 군집화된 인덱스
뭐가 군집? 인덱스와 데이터가 군집

Clustered Index

41 - 랜덤10, sdfsfd
42 - 랜덤20, dvdvdc
43 - 랜덤1, sdfsldkf
44 - 랜덤2, dfsdffs
45 - 랜덤3, dfsfsf

랜덤4, slkfsfj

범위 검색에는 강력하지만 Insert 할때는 어려움이 있을 수 있다

Non-Clustered

45 - 123 123 - 랜덤3, dfsfsf
20 - 231 231 -
1 - 145 1 -
44 - 987 44 - 랜덤2, dfsdffs
43 - 567 43 - 랜덤1, sdfsldkf

해시방식으로 빨리 찾을 수 있음

Review

Clustered Index
PK 45 - 랜덤3
Pk와 유사
순서대로
한 테이블에 하나만
범위 검색 짱
존재하는 PK 사이에 INSERT할 경우 대참사
왜 Auto_Increment?

Non-Clustered
Index 45등 - 랜덤3
순서 상관 없음 - 해시 함수방식으로 pk를 찾아서 pk를 다시 검색하기 때문에
한 테이블에 여러개
추가 저장 공간 필요 (약 10%)
INSERT시 추가 작업 필요 (인덱스 생성)
Cardinality 카디널러티

Example

email을 PK로 가져갈경우 DB 성능에 이슈가 있을수도 있습니다.
별도 시퀀스를 PK로 가져가면 어떨까요? - 유니크키를 이메일, Pk는 Clustered Index는 다른 값을 주는게 유리, a로 시작하는 이메일을 가진 유저가 Insert 되면 다 밀어낸 다음 들어가야 된다

Advanced

Expalin aka. 실행계획
B - Tree, Page(Block) in InnoDB
Cardinality
Composite key
innodb_buffer_pool_size
log_throttle_queries_not_using_indexes

*sql레벨업 책 참고

0개의 댓글