728x90
- DB
- Index
Index 란?- Index 작동 원리
- Index 종류
- B-Tree 인덱스
- Hash Indexes
- Bitmap Index
- GIST(Generalized Search Tree)
- R-Tree
- Full Text Index
- Spatial Index
- Trie(Prefix Tree) Index
- Covering Index
- 영속성
- 트랜잭션
- ORM
- ACID
- N+1 문제
- DB 정규화
- Data Replication
- sharding 전략
- CAP 이론
- Index
Index 작동 원리
Index란 ➡️ Index 개념..
Index 작동 원리
- 삽입 작업
새로운 데이터가 테이블에 삽입될 때, 인덱스된 열의 값에 따라 인덱스 트리에도 해당 데이터의 위치 정보가 삽입됨. - 검색 작업
사용자가 특정 값을 요청하면, DB 는 인덱스를 사용하여 데이터의 위치를 빠르게 찾아낼 수 있음. 이는 전체 데이터를 순차적으로 검색하는 것보다 훨씬 빠름. - 삭제 작업
데이터가 삭제되면 해당 데이터의 인덱스도 업데이트되어야 함.
tistory 블로그 글에 있음 Index 동작원리
- 데이터 파일 블록이 10만개가 있다고 가정할 때 select 문 실행 시
- server process 가 구문 분석 과정을 마친 후 database buffer cache 조건에 부합하는 데이터가 있는지 확인
- 해당 정보가 buffer cache 에 없다면 디스크 파일에서 조건에 부합하는 블럭을 찾아 database buffer cache에 가져온 뒤 사용자에게 보여줌
- 이 때 index 가 없으면 10만개 전부 database buffer cache 로 복사한 뒤 풀스캔으로 찾음.
- index 가 있으면 where 절의 조건의 컬럼이 index의 키로 생성되어 있는지 확인한 뒤, 인덱스에 먼저 가서 조건에 부합하는 정보가 어떤 row id 를 가지고 있는지 확인 후 row id 에 있는 블럭을 찾아가 해당 블럭만 buffer cache 에 복사함.
Index 사용이 불가능한 경우에는...
- 인덱스 컬럼을 조건절에서 가공하면 인덱스 사용이 불가능함.
- 부정형 비교는 인덱스 사용 불가능
- is null 조건만으로 인덱스 사용불가.
Index 사용 시 고려 사항
- 인덱스는 검색 성능을 향상 시키지만, 데이터 삽입, 삭제, 갱신 작업 시에는 성능 저하가 발생할 수 있음 (Insert, Delete, Update) -> 인덱스 구조 자체를 수정해야 하기 때문
- 인덱스는 저장 공간을 추가로 사용하기 때문에 필요한 경우에만 생성하는 것이 좋음.
728x90
'99클럽 TIL' 카테고리의 다른 글
99클럽 코테 스터디 5일차 TIL DB Hash Indexes (0) | 2024.05.24 |
---|---|
99클럽 코테 스터디 4일차 TIL DB B-Tree 인덱스 (0) | 2024.05.23 |
99클럽 코테 스터디 2일차 TIL DB Index (0) | 2024.05.21 |
99클럽 코테 스터디 1일차 TIL JAVA 17 (0) | 2024.05.20 |
32일 차 TIL JAVA 11 (0) | 2024.05.19 |
Comment