목록 보기
슬로우 쿼리 해결기: 함수형 인덱스로 비트 연산 쿼리 최적화하기
백엔드

슬로우 쿼리 해결기: 함수형 인덱스로 비트 연산 쿼리 최적화하기

라인
라인
2026년 2월 13일

두줄요약

MySQL 함수형 인덱스로 비트 연산 조건이 인덱스를 타도록 바꿔 슬로우 쿼리를 해결했습니다.운영 적용 과정에서는 복제 지연과 조건 의미 변경 문제를 점진적 롤아웃으로 검증했습니다.

문제 상황

  • LINE VOOM 포스트 서버에서 헤비 유저 소셜 프로필 조회 시 30초 이상 걸리는 슬로우 쿼리 발생
  • user_id 필터 뒤 비트 연산 조건이 붙은 쿼리로 인해 수십만 건 스캔, 타임아웃과 모니터링 알림 혼선 발생

원인 분석

  • category_flag, access_flag의 비트 연산 조건이 인덱스 활용을 막아 전체 순회에 가까운 실행 계획 발생
  • 기존 조건의 의미를 바꾸지 않으면서 인덱스를 타게 만드는 쿼리 표현식 조정 필요

해결 방법

  • MySQL 8.0.13 함수형 인덱스로 (category_flag & 0x0100), (access_flag & 0x0001) 표현식 인덱싱
  • 비트 연산 truthy 체크를 10진수 동등 비교로 변경해 인덱스 매칭 확보
  • 온라인 DDL과 점진적 롤아웃으로 운영 적용, 복제 지연과 조건 변환 버그를 조기 발견

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...