인덱스란 무엇인가요?

김영석·2023년 5월 21일
0

인덱스란?

인덱스란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조 이다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물지적 주소와 함께 저장이 된다.
이렇게 인덱스가 생성되면 쿼리문에 인덱스 생성 컬럼을 'where' 조건으로 거는 등의 작업을 하게 되면 'Full Scan'을 수행하지 않고 책에 있는 색인처럼 index를 찾아서 작업을 수행하며, 'Select'외에도 'Update' , 'Delete'의 성능이 향상 된다.

인덱스의 관리

인데스는 항상 최신의 데이터를 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색 할 수 있다. 그렇기 때문에 Insert,Update,Delete 수행된다면 계속 정렬을 해줘야 하고 그에 따른 부하가 발생한다.

Insert: 새로운 데이터에 대한 인덱스를 추가한다.
Delete: 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행한다.
Update: 기존의 인덱스를 사용하지 않음으로 처리하고, 갱신된 데이터에 대해 인덱스를 추가합니다.

인덱스의 장단점

장점:
테이블을 조회하는 속도와 그에 따른 성능을 향상 시킬 수 있다.
전반적인 시스템의 과부화를 줄일 수 있다.
단점:
인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
인덱스를 관리하기 위해 추가 작업이 필요하다.
인덱스를 잘못 사용할 경우 오히려 성능을 저하하는 역효과가 날 수 있다.

즉, 인덱스는 DBMS에서 테이블에 대한 검색 속도 성능을 향상시키기 위해 사용하는 자료구조로, 항상 최신의 데이터를 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다. 하지만 지속적으로 인덱스를 최신하지 않으면 오히려 안좋은 효과가 나올 수 있다.

인덱스는 사용하는 것 만큼이나 생성된 인덱스를 관리해주고 사용하지 않는 인덱스의 경우에는 바로 제거해줘야 한다.

profile
백엔드 개발자

0개의 댓글