TestForge | Aidevops | 📊 Plogger ✍️ Blog 📚 Docs
plogger

AI DevOps Korea

AI 서비스 개발, 운영, 성능개선을 하나의 루프로 연결합니다

aidevops.kr에서 LLMOps, RAG, AI Agent, 관측성, 평가, 비용-성능 최적화를 실전 운영 관점으로 정리합니다.

쿼리 플랜 회귀를 막는 데이터베이스 가드

· 수정 5월 17일
쿼리 플랜 회귀를 막는 데이터베이스 가드

데이터베이스 성능 문제는 쿼리 자체가 바뀌지 않았는데도 갑자기 나타날 수 있습니다. 데이터 분포가 달라지고, 통계가 갱신되고, 인덱스가 추가되거나 삭제되고, 옵티마이저가 다른 실행 계획을 선택하면 어제 빠르던 쿼리가 오늘 장애의 원인이 됩니다. 이런 문제를 쿼리 플랜 회귀라고 볼 수 있습니다.

느린 쿼리 로그만으로는 늦다

느린 쿼리 로그는 이미 느려진 뒤에 알려줍니다. 운영 환경에서 p95 지연이 튀고 나서야 플랜을 확인하면 사용자는 이미 영향을 받았습니다. 중요한 핵심 쿼리는 배포 전후에 실행 계획을 비교할 수 있어야 합니다.

특히 다음 쿼리는 별도로 관리하는 편이 좋습니다.

  • 결제, 로그인, 검색처럼 트래픽이 많은 쿼리
  • 배치에서 대량 데이터를 훑는 쿼리
  • 조인이 많고 조건 분포가 민감한 쿼리
  • 최근 인덱스나 스키마 변경의 영향을 받는 쿼리

모든 쿼리를 같은 수준으로 감시할 필요는 없지만, 중요한 쿼리는 이름을 갖고 관리해야 합니다.

플랜 비교의 핵심 신호

실행 계획은 길고 복잡합니다. 그래서 전체 텍스트를 사람이 매번 읽는 방식은 오래가지 않습니다. 자동 비교에서는 다음 신호를 우선 봅니다.

  • 순차 스캔으로 바뀌었는지
  • 조인 순서가 크게 바뀌었는지
  • 예상 row 수가 실제와 심하게 다른지
  • 정렬이나 해시 작업의 비용이 커졌는지
  • 사용하던 인덱스가 사라졌는지

이 신호는 알림을 만들기 좋고, 리뷰어가 빠르게 판단할 수 있습니다.

배포 파이프라인에 넣는 방법

테스트 데이터베이스에서 대표 파라미터로 핵심 쿼리의 EXPLAIN을 수집하고, 이전 기준선과 비교합니다. 차이가 감지되면 무조건 실패시키기보다 위험 등급을 붙여 리뷰 대상으로 올리는 방식이 현실적입니다. 데이터 분포가 운영과 다르면 오탐이 생길 수 있으므로, 운영 샘플 통계나 익명화된 데이터 세트를 함께 관리하면 정확도가 올라갑니다.

운영 체크리스트

  • 핵심 쿼리에 이름과 소유자를 지정한다.
  • 배포 전후 실행 계획을 저장한다.
  • 플랜 변화와 실제 지연 지표를 연결한다.
  • 인덱스 변경 PR에는 영향을 받는 쿼리를 명시한다.
  • 통계 갱신 후 급격한 플랜 변화를 감시한다.

쿼리 튜닝은 느려진 뒤에 하는 소방 작업으로 끝나면 안 됩니다. 플랜 회귀를 배포 시스템 안에서 다루면 데이터베이스 성능은 훨씬 예측 가능해집니다.

Continue Reading

다음으로 읽기 좋은 글

다음 탐색

이 주제를 시스템 관점으로 더 이어서 보기