Backend/DB

커버링 인덱스 적용

seung_soos 2024. 3. 21. 16:17

시작하며

MMS 발송 모듈에서 히스토리 테이블의 Select 시 성능 저하로 커버링 인덱스를 적용하였다.

 

현재 상황

  • 테이블은 4개의 컬럼으로 구성되어있고, 4개의 컬럼이 복합 PK로 구성 및 파티션이 적용 되어 있다. 
  • 발송 배치시 Select 쿼리 성능 저하로 TPS가 맞춰지지 않았다.

원인

  • 복합 PK를 사용시 단점으로 Where 조건절이 복합키 컬럼이 모두 만족 되지 않는다면 인덱스가 적용이 되지않는다. 현재의 Where 조건절에는 하나의 컬럼만이 사용되었다. 
  • History 테이블로서 데이터가 지속적재 되기때문에 시간 경과에 따른 누적 성능 저하가 발생한다.

해결방안

  • Where 조건절에 해당하는 컬럼을 추가 적용하여, 인덱스가 적용되도록 추가하여, 기존 성능 2초에서 0.01초로 감소시켰다.

커버링 인덱스 적용 전
커버링 인덱스 적용 후

 

링크 : 인덱스 자료 정리