10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册的摘录

15.8.10.2配置非持久优化统计参数

本节介绍如何配置非持久优化器统计信息。优化器统计信息不会持久化到磁盘innodb_stats_persistent =了或者当单个表被创建或修改时STATS_PERSISTENT = 0.相反,统计信息存储在内存中,并在服务器关闭时丢失。统计数据也会根据某些操作和某些条件定期更新。

属性启用的优化器统计信息默认持久化到磁盘innodb_stats_persistent配置选项。有关持久优化器统计信息,请参见第15.8.10.1节,“配置持久优化器统计参数”

优化器数据更新

非持久优化器统计信息会在以下情况下更新:

配置页面采样数

MySQL查询优化器使用估计统计数据关于键分布,以选择一个执行计划的索引,基于相对选择性的索引。当InnoDB更新优化器统计信息,它从表上的每个索引中抽样随机页来估计基数的索引。(这种技术被称为随机的潜水.)

为了控制统计估计的质量(从而为查询优化器提供更好的信息),可以使用该参数更改抽样页面的数量innodb_stats_transient_sample_pages.默认的抽样页数是8,这可能不足以产生准确的估计,从而导致查询优化器做出糟糕的索引选择。这种技术对于大的表格和表格中使用的连接.不必要的全表扫描对于这样的表可能是一个重大的性能问题。看到第8.2.1.23节,“避免全表扫描”有关调优此类查询的技巧。innodb_stats_transient_sample_pages是可在运行时设置的全局参数。

的价值innodb_stats_transient_sample_pages影响所有的索引抽样InnoDB表和索引innodb_stats_persistent = 0.当您更改索引样本大小时,请注意以下潜在的重大影响:

  • 像1或2这样的小值可能导致对基数的不准确估计。

  • 增加了innodb_stats_transient_sample_pages值可能需要更多的磁盘读取。大于8(比如100)的值会导致打开表或执行表所需的时间显著减慢显示表状态

  • 优化器可能会根据索引选择性的不同估计选择非常不同的查询计划。

任何价值innodb_stats_transient_sample_pages最适合系统,设置选项并保持在那个值。选择一个值,可以对数据库中的所有表进行合理准确的估计,而不需要过多的I/O。因为统计信息会在不同的时间自动重新计算,而不是在执行分析表,增加索引样本大小没有意义,请运行分析表,然后再次减少样本量。

较小的表通常比较大的表需要更少的索引示例。如果您的数据库有许多大表,请考虑使用较高的值innodb_stats_transient_sample_pages而如果你有更小的桌子。