Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Solid
- 완벽이해
- hateoas
- Be
- 클린코드
- GC
- 미니미프로젝트
- 도커
- M:N
- Execution Engine
- ComponentScan
- ATDD
- 마이크로서비스디자인패턴
- KPT
- Runtime Area
- DB
- Spring/JAVA 서적
- Self Descript Message
- RESAPI
- 부모객체
- pair programming
- java
- G1GC
- TDD
- 자식객체
- 스프링으로하는마이크로서비스구축
- 트랜잭션 격리 수준
- Java 22
- docker
- testdrivendevelopment
Archives
- Today
- Total
Programming Summary
DB) 인덱스란? 본문
인덱스란
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상 시키기 위한 자료구조이다.
데이터베이스의 index는 책의 색인과도 같은 역할을 한다.
인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE나 DELETE의 성능이 함께 향상된다. 그 이유는 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문이다.
인덱스(index)의 장점과 단점
- 장점
- 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있음.
- 전반적인 시스템의 부하를 줄일 수 있음.
- 단점
- 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요
- 인덱스를 관리하기 위한 추가 작업이 필요
- 잘못 사용할 경우 오히려 성능이 저하될 수 있음.
이러한 인덱스를 구현하는데 다양한 자료구조를 사용할 수 있는데, 가장 대표적인 방법은 B+Tree를 활용하는 방법이다.
B+Tree와 B-Tree
B+Tree란 DB의 인덱스를 위해 자식 노드가 2개 이상인 B-Tree를 개선한 자료구조이다. B+Tree는 모든 노드에 데이터를 저장했던 BTree와는 다른 특성을 가지고 있는데
- 리프 노드만 인덱스와 함께 데이터를 가지고 있고, 나머지 노드들은 데이터를 위한 인덱스(Key)만을 갖는다.
- 리프노드들은 LinkedList로 연결되어 있다.
- 데이터 노드 크기는 인덱스 노드의 크기와 같지 않아도 된다.
- 시간복잡도는 O(log2n)
'CS 공부' 카테고리의 다른 글
DB) 트랜잭션 격리수준이란? (1) | 2023.09.22 |
---|---|
DB) MVCC(Multi Version Concurrency Control)란? (0) | 2023.09.22 |
Java) JVM이란? (1) | 2023.09.08 |
Programming) OOP란? 그리고 그 외 지식들 (1) | 2023.09.05 |
GIT) Git이란? (0) | 2023.09.04 |