카테고리 없음2020. 12. 30. 11:21

MariaDB의 통계정보

 

MariaDB도 비용기반의 옵티마이저(Cost-based Optimizer, CBO)를 채택하고 있기 때문에 통계정보가 존재한다.

하지만 다른 RDBMS와 같이 다양한 통계정보가 존재하는 것은 아니고, 대략의 레코드 건수와 인덱스의 유니크한 값의 갯수 정도가 전부이다.

 

 

mysql database의 

innodb_index_stats, innodb_table_stats에 이 통계정보가 존재한다.

 

통계정보의 생성은 테이블생성시에 stats_persistent의 값에 따라 생성여부가 정해지는데,

default : 테이블을 생성할 때 별도로 stats_persistent 옵션을 설정하지 않은 것과 동일하며, 테이블의 통계를 영구적으로 관리할지 말지를 innodb_stats_persistent 시스템 설정 변수의 값으로 결정한다.

0 : 테이블의 통계 정보를 mysql 데이터베이스의 innodb_index_stats와 innodb_table_stats에 저장하지 않음

1 : 테이블의 통계 정보를 mysql 데이터베이스의 innodb_index_stats와 innodb_table_stats에 저장함.

의 값을 가질 수 있다.

 

예) 테이블 생성시에 통계정보 생성 지정 방법

 

통계정보가 새로 수집되는 경우

- 테이블이 새로 오픈되는 경우

- 테이블의 레코드가 대량으로 변경되는 경우(테이블의 전체 레코드 중에서 1/16 정도의 update 또는 insert나 delete가 실행되는 경우)

- analyze table 명령이 실행되는 경우

- show tables status 명령이나 show index from 명령이 실행되는 경우

- innoDB 모니터가 활성화되는 경우

- innodb_stats_on_metadata 시스템 설정이 on된 상태에서 show tables status 명령이 실행되는 경우

 

통계정보가 변경되는 것을 조정하기 위한 시스템 설정변수

stats_auto_recalc

1 : 테이블의 통계 정보를 MySQL 5.5 이전의 방식대로 자동 수집하게 된다.

0 : 테이블의 통계 정보는 analyze table 명령을 실행할 때에만 수집된다.

default : 테이블을 생성할 때 별도로 stats_auto_recalc 옵션을 설정하지 않은 것과 동일하며, 테이블의 통계 정보 수집을 innodb_stats_auto_recalc 시스템 설정 변수의 값으로 결정한다.

 

 

 

참고 : 

Real MariaDB(이성욱 저) P.119

Posted by 자수성가한 부자