728x90
- DB
- Index
- Index 란
- Index 작동 원리
- Index 종류
- B-Tree 인덱스
- Hash Indexes
- Bitmap Index
- GIST(Generalized Search Tree)|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 란?
- DB 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조
- DB 내의 특정 컬럼(열) 이나 컬럼들의 조합에 대한 값과 해당 값이 저장된 row 의 위치를 매핑하여 DB 쿼리의 성능을 최적화 하는 데 중요한 역할을 함.
인덱스의 기능
- 검색 성능 향상(조건절 where 절의 효율성)
DB 에서 특정 데이터를 찾을 때, 인덱스를 사용하면 검색 시간을 대폭 줄일 수 있음. ➡️ 대용량 데이터에서 효과가 큼 - 정렬된 데이터 액세스
인덱스는 데이터를 정렬된 상태로 저장하기 떄문에, 정렬된 순서로 데이터에 접근하고 검색하는 것이 효율적임. - 효율적인 데이터 집계와 범위 검색
최대값, 최소값을 찾거나 데이터 범위를 지정하여 검색할 때 인덱스를 활용하면 처리 속도가 빨라짐.
인덱스 종류
- B-Tree 인덱스
- Hash Indexes
- Full-text Index
- Composite 인덱스(복합 인덱스)
- Spatial Index
- Bitmap Index
- Clustered 인덱스
장단점
장점
- 검색 대상 레코드의 범위를 줄여 검색 속도를 빠르게 할 수 있음.
- 중복 데이터를 방지하거나 특정 컬럼의 유일성(Unique)을 보장할 수 있음.
- ORDER BY 절과 GROUP BY 절, WHERE 절 등이 사용되는 작업이 더욱 효율적으로 처리됨.
단점
- 인덱스는 추가적인 디스크 공간을 사용함.
- 데이터가 삽입, 삭제, 업데이트 될 때마다 인덱스도 함께 갱신되어야 하므로 성능저하가 발생할 수 있음.
- 한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.
- 인덱스 생성 시간이 오래 걸릴 수 있음.
인덱스 관련 이것저것
인덱스 생성
- 단일 컬럼 인덱스 생성
CREATE INDEX idx_column ON table_name (column);
- 복합 컬럼 인덱스 생성
CREATE INDEX idx_compound ON table_name (column1, colum2);
- 유니크 인덱스 생성
CREATE UNIQUE INDEX ide_unique_column ON table_name (column);
인덱스 삭제
DROP INDEX idx_column ON table_name;
인덱스 성능 확인
- DB 쿼리 실행 성능 체크
(PostgreSQL, MySQL) EXPLAIN SELECT * FROM table_name WHERE column = 'value';
인덱스 관리 및 모니터링 도구
- MySQL :
SHOW INDEX FROM table_name;
명령어를 사용해 테이블의 인덱스 정보를 확인할 수 있음. - PostgreSQL :
pg_indexes
뷰를 조회하거나EXPLAIN
명령어로 실행 계획을 확인할 수 있음. - Oracle : Oracle Enterpise Manager 와 같은 GUI 도구를 사용해 인덱스 관리 및 성능 모니터링을 수행할 수 있음.
- SQL Server : SQL Server Management Studio(SSMS) 에서 인덱스 성능을 분석하고 조정할 수 있음.
인덱스 유지보수
DB 에 데이터가 계속 추가되고 변경되면서 인덱스의 효율성이 저하될 수 있음.
인덱스를 주기적으로 재구성하거나 재생성해야할 수 있음.
- 인덱스 재구성(SQL Server)
ALTER INDEX ALL ON table_name REORGANIZE;
- 인덱스 재생성(SQL Server)
ALTER INDEX ALL ON table_name REBUILD;
728x90
'99클럽 TIL' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL DB B-Tree 인덱스 (0) | 2024.05.23 |
---|---|
99클럽 코테 스터디 3일차 TIL DB Index 작동 원리 (0) | 2024.05.22 |
99클럽 코테 스터디 1일차 TIL JAVA 17 (0) | 2024.05.20 |
32일 차 TIL JAVA 11 (0) | 2024.05.19 |
31일 차 TIL Spring Interceptor vs AOP vs Filter (0) | 2024.05.18 |
Comment