Back-end/DB

Index

Ho's log 2021. 5. 4. 18:06

Index

(검색을 위해) 임의의 규칙대로 부여된, 임의의 대상을 가리키는 무언가

 

ex) 2학년 3반 21번, 서울시 송푸구 신청동 루터회관 05510, List<Object> objects ... objects.get(index)

 

IN DATABASE

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

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

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

왜 쿼리가 느릴까?

 

Clustered vs Non -Clusterd

 

 

Clustered Index : 군집화된 인덱스

Cluster : 군집

Clustered : 군집화

 

*뭐가 군집? 인덱스와 데이터가 군집(정렬되어있다) 

-> 범위 검색 아주 강력!, 삽입과 정렬비용이 커지면 아주 느리다.

 

순서대로

한테이블에 하나만

범위 검색 Good -> 공간 지역성 

존재하는 PK 사이에 INSERT할 경우 대참사

 -> 왜 Auto_Increment? 성능이슈

 

Non - Clusterd

약한 참조 관계 이며,  ,주소가 있다.

 

순서 상관 없음(데이터를 임의순서로 저장)

한 테이블에 여러개

추가 저장 공간 필요 (약 10%)

INSERT시 추가 작업 필요(인덱스 생성)

Cardinality 카디널러티 -> 유일한 값이길 좋음 

 

Pk 는 정렬 되기때문에 email로 받으면 DB 추가시 재정렬을 해야해서 성능 이슈가 발생할수 있다

 

 

+심화

Explain aka. 실행계획

B- Tree, Page(Block) in InnoDB

Cardinallity

Composite key

innodb_buffer_pool_size

log_throttle_queries_not_using_indexes

 

 

www.youtube.com/watch?v=NkZ6r6z2pBg&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=84

 

'Back-end > DB' 카테고리의 다른 글

테이블 권한 부여, 시노님 부여  (0) 2021.08.02
ORACLE DB의 내부 동작 과정  (0) 2021.06.13