湖南网站开发 岚鸿,如何给自己做网站,网站伪静态怎么做,软装设计网站大全本节介绍如何配置非持久性优化器统计信息。当innodb_stats_persistentOFF或使用创建或更改单个表时#xff0c;Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT0。相反#xff0c;统计信息存储在内存中#xff0c;并且在服务器关闭时会丢失。统计信息还可以通过某些操…本节介绍如何配置非持久性优化器统计信息。当innodb_stats_persistentOFF或使用创建或更改单个表时Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT0。相反统计信息存储在内存中并且在服务器关闭时会丢失。统计信息还可以通过某些操作在特定条件下定期更新。默认情况下优化器统计信息会保留在磁盘上并由innodb_stats_persistent 配置选项启用。有关持久性优化器统计信息请参见第15.8.10.1节“配置持久性优化器统计参数”。优化器统计信息更新非持久性优化器统计信息将在以下情况下更新运行中ANALYZE TABLE。运行SHOW TABLE STATUS SHOW INDEX或 在 启用了该选项的情况下查询 INFORMATION_SCHEMA.TABLES或 INFORMATION_SCHEMA.STATISTICS表 innodb_stats_on_metadata。的默认设置 innodb_stats_on_metadata是 OFF。启用 innodb_stats_on_metadata 可能会降低具有大量表或索引的架构的访问速度并降低涉及InnoDB 表的查询的执行计划的稳定性。 innodb_stats_on_metadata使用一条SET语句全局配置 。SET GLOBAL innodb_stats_on_metadataON注意innodb_stats_on_metadata 仅当优化器统计信息配置为非持久性( innodb_stats_persistent 禁用时)时才适用 。使用启用的选项 启动mysql客户端 --auto-rehash这是默认设置。该 auto-rehash选项将导致所有 InnoDB表被打开并且打开表操作将导致统计信息被重新计算。为了提高mysql 客户端的启动时间并更新统计信息可以auto-rehash使用该 --disable-auto-rehash 选项将其关闭 。该auto-rehash 功能可为交互式用户自动完成数据库表和列名称的名称命名。首先打开一个表。InnoDB 检测到自上次更新统计信息以来表的1/16已被修改。配置采样页数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_persistent0。更改索引样本大小时请注意以下潜在的重大影响较小的值(例如1或2)可能会导致基数估计不准确。增大该 innodb_stats_transient_sample_pages 值可能需要更多的磁盘读取。大于8的值(例如100)会导致打开表或执行时间大大减慢SHOW TABLE STATUS。优化器可能基于对索引选择性的不同估计来选择非常不同的查询计划。无论哪种值对 innodb_stats_transient_sample_pages 系统最有效请设置该选项并将其保留为该值。选择一个可以对数据库中的所有表进行合理准确估计的值而无需过多的I / O。由于统计信息会在执行以外的其他时间自动重新计算 ANALYZE TABLE因此增加索引样本大小运行ANALYZE TABLE并再次减小样本大小没有意义 。较小的表通常比较大的表需要更少的索引样本。如果您的数据库有很多大表则考虑使用innodb_stats_transient_sample_pages 比大多数情况下较小的表更高的值 。