728x90
반응형
1. 인덱스 (Index)


인덱스란 추가적인 저장 공간을 활용하여 데이터베이스 처리 속도를 향상시키기 위한 자료구조를 의미한다.
인덱스를 활용하면 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE 의 성능이 함께 향상된다.
왜냐하면 UPDATE, DELETE 연산은 해당 대상을 조회해야만 작업을 수행할 수 있기 때문이다.
UPDATE USER
SET NAME = "smarthammer"
WHERE NAME = "smart"
만약 index 를 사용하지 않은 컬럼을 조회해야 하는 상황이라면 전체를 탐색하는 Full Scan을 수행해야 한다.
Full Scan은 전체를 비교, 탐색하기 때문에 처리속도가 떨어진다.
(1) 인덱스를 사용하는 이유 및 장점
인덱스의 가장 큰 특징은 데이터들이 정렬되어 있다는 점이다. 이 특징으로 인해 조건 검색이라는 영역에서 굉장한 장점이다.
- 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
- 전반적인 시스템의 부하를 줄일 수 있다.
(2) 인덱스의 단점
- 인덱스를 관리하기 위한 추가적인 저장공간과 추가 작업이 필요하다.
- 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.
(2) 인덱스의 관리
DBMS는 index가 항상 최신의 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다. 따라서 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE 가 수행되면 다음과 같은 연산을 추가적으로 해줘야 하고, 그에 따른 오버헤드가 발생한다.
- INSERT : 새로운 데이터에 대한 인덱스를 추가한다.
- DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행한다.
- UPDATE : 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가한다.
만약 CREATE, DELETE, UPDATE 가 빈번하게 속성에 인덱스를 걸게 되면 인덱스의 크기가 커져 오히려 성능이 저하되는 역효과가 발생할 수 있다. DELETE와 UPDATE는 기존의 인덱스를 삭제하지 않고 '사용하지 않음'처리를 하기 때문이다.
반응형
'Knowledge > 이론' 카테고리의 다른 글
| SQL 명령어 (0) | 2024.03.04 |
|---|---|
| MVC 패턴 (1) | 2024.02.27 |
| RESTful API (0) | 2024.02.25 |
| 브라우저의 렌더링 과정 (0) | 2024.02.20 |
| URI 와 URL 차이 (0) | 2024.02.20 |