핵심 성과 요약

<aside>

</aside>

<aside>

</aside>

1. 문제 상황 및 분석

병목 현상 발생

실시간 대테러 관제 시스템 운영 중, 데이터가 22만 건 이상 누적된 ****환경에서 특정 인물의 최신 동선을 조회하는 API의 응답 속도가 평균 194초 소요되는 성능 저하가 발생했습니다.

원인 분석

병목이 발생하는 쿼리의 실행 계획을 분석한 결과, 인덱스가 부재하여 비효율적인 탐색이 이루어지고 있음을 확인했습니다.

2. 인덱스 도입 전략

데이터베이스 인덱스는 조회 성능을 향상시켜주는 도구이지만, INSERT, UPDATE, DELETE와 같은 데이터 변경 작업이 발생할 때마다 인덱스 트리를 재정렬해야 하는 오버헤드가 발생합니다.

기술 서적 **'Real MySQL'**에서는, 테이블에 레코드를 1개 추가하는 비용을 1이라고 할 때, 인덱스에 키를 추가하는 비용은 약 1.5 정도라고 말했습니다. 즉, 인덱스가 하나 늘어날 때마다 쓰기 작업의 비용은 가중되기에, 무분별한 생성보다는 명확한 기준에 따른 전략적 접근이 필요합니다.

따라서 저는 이번 프로젝트에서 다음과 같은 4가지 핵심 기준을 수립하여 인덱스 생성 여부를 결정했습니다.

인덱스 생성 여부를 결정하는 4가지 기준

  1. 카디널리티
  2. 선택도