mysql----innodb统计信息
对innodb 统计信息的控制可以通过如下几个常用的variables 来实现
1、innodb_stats_persistent:
这个参数控制着innodb的统计信息是否持久化到磁盘,先说明一下持久化到磁盘是什么意思;通常来说统计信息只保存在内存中,也就是说如果mysql服务一重启那么之前
所有的统计信息都没有了,这个情况下mysql就要重新收集&计算了;如果统计信息持久化到磁盘了,那么就可以直接从磁盘中读取;
为了真正的可以达到红统计信息持久化到磁盘光是innodb_stats_persistent=on是做不到的;innodb_stats_persistent=on 只是说明了打开了mysql把表的统计
信息持久化到磁盘的能力,但是这个能力用不用不是由表自己说了算;在create table 语句中指定STATS_PERSISTENT=1这个时候表就支持持久化工能了。
create table t(x int,y int) STATS_PERSISTENT=1;
2、由1中的描述可知 innodb的表可以分成两大类、一类是支持持久化的表,一类是不支持持久化的表;它们各自的统计信息的收集方式又可以通过不同的变量来控制
3、innodb_stats_persistent_sample_pages 持久化统计信息的采样页
4、innodb_stats_transient_sample_pages 非持久化统计信息的采样页
5、innodb_stats_auto_recalc 变更超过10%的时候要不要自动收集统计信息
6、innodb_stats_on_metadata 执行show table status | information_schema.tables 时是否自动收集统计信息