본문 바로가기

database/mariadb

mariadb 통계 정보

반응형

데이터베이스에서 두뇌의 역할을 담당하는 옵티마이저는 비용 기반 최적화 방법(CBO) 으로 SQL 수행계획을 작성한다.

* 예전엔 통계 정보를 생성하는 연산에 필요한 리소스가 부족하여 규칙 기반 최적화 방법(RBO)을 사용했었다.

 

비용 기반 최적화에서 중요한것은 통계 정보이다. db는 빠른 SQL 수행을 위해 통계 정보를 작성하게 되는데, 이 통계정보에 따라 필요한 레코드만 가져올 수 있도록 인덱스 레인지 스캔을 할 수도 있고 처음부터 끝까지 읽는 풀스캔을 수행할 수도 있다. 때문에 통계 정보가 잘못 되었다면 1초면 수행 가능한 쿼리문도 10분이 걸릴 수 있다.

 

통계 정보의 수집 조건

 

  • 테이블 생성
  • 테이블의 레코드가 대량으로 변경 되는 경우 (INSERT, UPDATE, DELETE)
  • SHOW TABLE STATUS , SHOW INDEX FROM 명령이 실행되는 경우
  • ANALYZE TABLE 이 실행되는 경우
  • 등등

통계 정보가 자주 수집되면 DB 의 성능에 좋지 않은 영향을 줄 수 있기 때문에 영구적인 통계 정보를 사용하여 의도되지 않은 통계 정보 변경을 막을 수 있다.

 

통계 정보 수집 옵션

통계 정보 수집은 innodb_stats_auto_recalc 옵션을 통해 설정할 수 있다. default 는 ON 이지만 OFF 로 변경하면 통계 정보가 자동으로 수집되지 않는다. 또한 STATS_AUTO_RECALC 을 통해 테이블 단위로도 통계 정보 수집 조건을 변경할 수 있다.

 

  • STATS_AUTO_RECALC=1 : 자동 수집
  • STATS_AUTO_RECALC=0 : 수동 수집 (ANALYZE TABLE 명령)
반응형

'database > mariadb' 카테고리의 다른 글

mariadb 쿼리 실행  (0) 2023.01.18
mariadb 권한 role  (0) 2023.01.15
mariadb 의 사용자 계정 식별 과 권한  (0) 2023.01.15
MariaDB 서버의 시작, 종료, 접속  (0) 2023.01.15