MySQL, MariaDB

MySQL /MariaDB 통계 정보

SungWookKang 2019. 9. 12. 05:47
반응형

MySQL /MariaDB 통계 정보

 

·       Version : MySQL 5.7, MariaDB 10.0

 

비용기반 최적화에서 가장 중요한것은 통계 정보이다. 통계 정보가 정확하지 않다면, 옵티마이저는 엉뚱한 실행계획을 생성하기 때문이다. MySQL, MariaDB 통계 정보 또한 일반 다른 RDBMS 같이 비용기반 옵티마이저를 사용하지만 아직 상용 RDBMS 비해서는 다양하지 않다.

 

MariaDB 10.0 MySQL 5.6 기능을 포함하고 있기 때문에 MySQL 5.6 매우 유사하다. MySQL 5.6 부터는 InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적(Persistent)으로 관리할 있다. MySQL 5.5 버전 까지는 show index from 으로 인덱스 칼럼의 분포를 확인할 있었지만 MySQL 5.6 부터는 mysql 데이터베이스에서 innodb_index_stats 테이블과 innodb_table_stats  테이블에서도 인덱스를 조회할 수있다.

show index from nclick.nclick;

 

 

 

select * from mysql.innodb_index_stats;

 

 

 

select * from mysql.innodb_table_stats;

 

 

MySQL 5.6 부터는 테이블을 생성할 STATS_PERSISTENT 옵션을 사용하여 통계 정보를 영구보관할 있다.

·       0 : 통계 정보를 MySQL 5.5 이전의 방식으로 관리, 단기적으로 사용

·       1 : 통계 정보를 innodb_index_stats, innodb_table_stats  테이블에 저장하여 영구 사용

·       DEFAULT : 기본값 1 설정을 적용.

 

Innodb_stats_auto_recalc 시스템 설정 변수값을 OFF 설정해도 통계가 자동으로 수집되는것을 막을 있다.

·       1 : 통계를 자동으로 수집

·       0 : ANALYZE TABLE 명령이 있을때만 수집

·       DEFAULT : 기본값 0 설정을 적용

 

CREATE TABLE `t1` (

`id` int(8) NOT NULL auto_increment,

`data` varchar(255),

`date` datetime,

PRIMARY KEY  (`id`),

INDEX `DATE_IX` (`date`)

) ENGINE=InnoDB,

  STATS_PERSISTENT=1,

  STATS_AUTO_RECALC=1,

  STATS_SAMPLE_PAGES=25;

 

 

[참고자료]

·       Configuring Persistent Optimizer Statistics Parameters  : https://dev.mysql.com/doc/refman/5.7/en/innodb-persistent-stats.html

·       Configuring Non-Persistent Optimizer Statistics Parameters : https://dev.mysql.com/doc/refman/5.7/en/innodb-statistics-estimation.html

 

 

 

2019-09-11 / 강성욱 / http://sungwookkang.com

 

MySQL, MySQL STATS, innodb_index_stats, innodb_table_stats, MySQL 통계, 히스토 그램, 옵티마이저

반응형