오픈소스 인사이트
home
오픈소스 기술 동향
home
💡

MariaDB 통계 정보 수집 및 성능 최적화 가이드

6 more properties
MariaDB에서 통계 정보는 쿼리 최적화, 인덱스 활용, 리소스 관리 등 성능을 향상시키는 데 핵심 역할을 합니다. 옵티마이저는 테이블 행 수, 인덱스 분포도, 히스토그램과 같은 데이터를 바탕으로 실행 계획을 수립합니다.

Q. 옵티마이저가 제대로 기능하지 않는다면, 쿼리는 어떻게 될까요?

→ 실행 계획이 부정확해져 불필요한 스캔, 과도한 I/O, 느린 응답이 발생할 수 있습니다.

1. MariaDB 쿼리 실행 흐름: 어디서 통계가 쓰일까?

SQL 파싱 → 옵티마이저 실행 계획 수립 → 스토리지 엔진과 연동
통계는 옵티마이저의 핵심 정보 기반

2. 통계 수집 방식 정리

InnoDB 영구 통계
디스크에 저장되며 재부팅 후에도 유효
innodb_stats_persistent 변수로 제어
엔진 독립 통계
MyISAM, Aria 등에서도 사용 가능
use_stat_tables 설정, ANALYZE TABLE 명령 필요
히스토그램 포함 (데이터 편중 상황 유리)

3. 히스토그램 통계: 옵티마이저의 ‘데이터 분포 지문’

비인덱스 열의 분포 인식 가능
Height-Balanced 또는 JSON 히스토그램(MariaDB 10.7+)

Q. 데이터가 몰린 값만 계속 조회된다면, 옵티마이저는 최선의 길을 찾을 수 있을까요?

4. 통계 갱신 전략

수동 갱신: ANALYZE TABLE 명령으로 필요한 열만 갱신 가능
통계 저장 테이블: mysql.table_stats, mysql.column_stats 등
주의: 잘못된 수동 갱신은 쿼리 성능 악화 가능

마무리 요약

정확하고 최신 통계 = 최적화된 쿼리 계획
영구 통계 + 히스토그램 = 성능 안정성
자동 vs 수동 전략적으로 선택
정기 갱신 = 운영 안정성 핵심

핵심 질문: 내 DB에서 통계 변동폭이 큰 테이블은 어디인지, 얼마나 자주 갱신하면 좋을까?

참고 자료

본 글은 에스코어 인사이트 리포트「MariaDB의 통계 정보 수집 및 성능 최적화 방안」을 바탕으로 재구성되었습니다.