본문 바로가기

Backend 개발/Backend 성능 개선

[인덱스 이용하여 백엔드 조회 API 성능 개선하기 ①]

반응형

인덱스 추가하여 성능 개선

실무에서 성능 개선할 상황은 사실 DB 쓰기 작업(생성/수정/삭제)보다 읽기 작업에서 많이 일어난다.

규모가 큰 프로젝트에서는 SELECT 할 데이터의 양이 몇백만개가 넘어가는 경우가 많기 때문이다.

우선 간단하게는 DB인덱스를 설정함으로써 성능을 개선할 수 있다. 테이블을 생성할 때 자동으로 PRIMAR 키나 UNIQUE 키가 인덱스로 설정되겠지만 인덱스 유무에 따라 성능 차이를 확인하기 위해 먼저 UNIQUE 키 인덱스를 제거하고 성능을 측정해본다.

SHOW INDEX FROM [테이블명];
ALTER TABLE [테이블명] DROP INDEX [인덱스 키 이름];

인덱스 제거 후 실행 결과

UNIQUE 키를 일반 인덱스로 추가하여 다시 성능을 측정해본다.

-- 일반 인덱스 추가
CREATE INDEX [생성할 인덱스 명] ON [테이블명](컬럼);
-- 실행계획 보기
EXPLAIN SELECT * FROM [테이블명] WHERE [인덱스 설정한 컬럼명] = 'test';

인덱스 추가 후 실행 결과

인덱스 설정에 따라 성능이 상당히 차이가 나는 것을 확인할 수 있다. 하지만 인덱스를 너무 많이 설정하면 또 다른 문제가 발생할 수 있으므로 적절히 인덱스를 설정하는 것이 좋다.

※ DB 쿼리 튜닝에 대해서는 추후에 다루기로 하겠다.

728x90
반응형