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 时是否自动收集统计信息

原文地址:https://www.cnblogs.com/JiangLe/p/5806007.html