반응형
💡 [DB] 이전 글 다시 보기
[ DB - 2 ] 트랜잭션(Transaction): 데이터 무결성이란
[ DB -1 ] 관계형 데이터베이스(RDB)와 NoSQL의 차이점
📍 인덱싱(Indexing)이란?
- 데이터베이스에서 검색 속도를 향상시키기 위해 특정 컬럼에 적용하는 기법이다.
- 데이터를 효율적으로 조회할 수 있도록 추가적인 자료구조를 생성하여 테이블의 특정 열을 기반으로 빠르게 접근한다.
📍 인덱스의 특징
- 주요 목적
- 대규모 테이블에서 검색 속도를 높이기 위해 사용된다.
- 특히, 자주 조회되는 컬럼(조건문, 정렬 등에 사용)에 인덱스를 적용한다.
- 자료구조
- 일반적으로 B-Tree 자료구조를 사용하여 구현된다.
- B+-Tree는 B-Tree의 변형으로 검색 성능이 더 빠르지만, 수정, 삭제 시 오버헤드가 더 크다.
- 사용 조건
- 삽입, 삭제, 수정이 자주 발생하지 않는 테이블에서 효과적이다.
- 조건(query)에 따라 검색 속도는 달라질 수 있다.
- 저장 방식
- 데이터는 파일 형태로 저장되며, SSD 등에 기록된다.
- 선형 구조(순차 검색)에서는 검색 시 최악의 경우 모든 데이터를 확인해야 하지만,
인덱스를 활용하면 이진 트리처럼 비교하며 검색 속도를 향상시킬 수 있다.
📍 인덱싱의 장점
- 검색 속도 향상
- 대규모 데이터에서 특정 레코드를 빠르게 찾을 수 있다.
- 이진 트리 구조(B-Tree, B+-Tree)를 활용하여 효율적으로 데이터에 접근 가능.
- 쿼리 성능 개선
- WHERE, ORDER BY, GROUP BY 절 등에서 자주 사용되는 컬럼에 대해 성능을 크게 향상시킨다.
📍 인덱싱의 단점 및 한계
- 추가적인 메모리 소모
- 인덱스를 유지하기 위한 메모리와 디스크 공간이 추가로 필요하다.
- 오버헤드 발생
- 데이터 수정, 삭제 시 인덱스까지 재계산해야 하므로, 추가적인 연산 비용이 발생한다.
- 인덱스가 많아지면 삽입, 삭제, 업데이트 성능이 저하될 수 있다.
- 조건의 중요성
- 적절한 조건으로 인덱스를 설정하지 않으면 검색 속도가 향상되지 않을 수 있다.
📍 인덱스 사용 시 고려사항
- 읽기 vs 쓰기 작업의 비율
- 읽기 작업이 많은 테이블에 적합하며, 쓰기 작업(삽입, 수정, 삭제)이 많은 경우 성능 저하 가능.
- 컬럼 선택
- 검색 빈도가 높은 컬럼에 인덱스를 생성해야 한다.
- 자주 변경되는 컬럼은 인덱스로 부적합하다.
💡 결론
인덱스는 검색 성능을 크게 향상시키는 중요한 기법이지만,
데이터 변경 작업(삽입, 수정, 삭제)이 빈번하거나 인덱스가 적절히 설계되지 않은 경우 오히려 성능 저하를 초래할 수 있다.
반응형
'CS' 카테고리의 다른 글
[HTTP - 2 ] URL 입력에서 웹 페이지 출력까지: HTTP 요청과 응답 과정 이해하기 (0) | 2025.02.20 |
---|---|
[HTTP - 1 ] HTTP란? : PUT과 PATCH의 역할과 차이점 (0) | 2025.02.20 |
[ DB - 2 ] 트랜잭션(Transaction): 데이터 무결성이란 (0) | 2025.02.20 |
[ DB -1 ] 관계형 데이터베이스(RDB)와 NoSQL의 차이점 (0) | 2025.02.20 |
[Process와 Thread - 3] 멀티 프로세스와 멀티 스레드 비교 (0) | 2025.02.20 |