mysql学习——索引的统计信息

索引的统计信息:

1.memory引擎根本不存储索引统计信息

2.MyISAM表存储引擎存放在磁盘中,analyze table需要全索引扫描来计算基数,整个过程需要锁表

3.InnoDB有持久化统计信息和非持久化统计信息。

3.1持久化统计信息:重启MySQL时,统计信息不丢失

3.2非持久化统计信息不在磁盘中存储统计信息,而是通过随机的索引访问进行评估并放在内存中

 

 

innodb_stats_samples_pages

设置样本页的数量

 

Show index from tab1查来索引的基数

或information_schema.statistics

mysql学习——索引的统计信息

 

参考资料:

https://www.cnblogs.com/ziroro/p/9948103.html

 

持久统计信息

  • 当  innodb_stats_persistent = ON,默认开启(表示开启永久统计信息功能,用不用由表来决定)
  • 创建表的时候指定 STATS_PERSISTENT=1

非持久统计信息

  • 默认开启

手动收集统计信息

analyze table tbl_name

如果发现执行计划内的统计信息有问题,可以手动收集,如果还是手动收集的不准,可以调整下参数采样参数。

innodb_stats_persistent = ON。调整 innodb_stats_persistent_sample_pages参数

innodb_stats_persistent = OFF。调整 innodb_stats_transient_sample_pages 参数