14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB

14.6.11 Configuring Optimizer Statistics for InnoDB  配置优化统计信息用于InnoDB

14.6.11.1 Configuring Persistent Optimizer Statistics Parameters
14.6.11.2 Configuring Non-Persistent Optimizer Statistics Parameters
14.6.11.3 Estimating ANALYZE TABLE Complexity for InnoDB Tables


这个章节描述了如何配置持久化和非持久化优化统一用于InnoDB表。

持久化统计信息是在MySQL 5.6.2中介绍,在MySQL 5.6.6中默认为 (innodb_stats_persistent=ON). 

mysql> show variables like '%innodb_stats_persistent%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| innodb_stats_persistent              | ON    |
| innodb_stats_persistent_sample_pages | 20    |
+--------------------------------------+-------+
2 rows in set (0.00 sec)


持久化优化统计信息是存在的在服务器重启后,允许更稳定的执行计划和更加一致性的查询性能。

持久化优化统计信息也提供了控制和灵活性额外的好处

mysql> show variables like '%innodb_stats_auto_recalc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_stats_auto_recalc | ON    |
+--------------------------+-------+
1 row in set (0.00 sec) 

1. 你可以使用innodb_stats_auto_recalc 配置选项来控制是否统计信息是自动更新在表有大量的改变后


2.你可以使用STATS_PERSISTENT, STATS_AUTO_RECALC, and STATS_SAMPLE_PAGES 子句在CREATE TABLE and ALTER TABLE statements

来配置优化器统计信息对于单个表

3.你可以查询优化器统计数据在mysql.innodb_table_stats and mysql.innodb_index_stats tables


4.你可以查询 mysql.innodb_table_stats and mysql.innodb_index_stats tables的last_update列 来确认统计信息是否是最新的

5. 你可以收到修改mysql.innodb_table_stats and mysql.innodb_index_stats tables 来强制

一个特定的查询优化器执行计划或者测试替代的计划不需要修改数据库


非持久化统计信息是在每次服务器重启后被清掉 ,重新计划在表的下一次访问。

作为一个结果, 不同的评估被产生当重新计算统计信息, 导致不同的选项来在执行计划和查询性能的变化

这个章节也提供了信息关于评估ANALYZE TABLE的复杂性, 这可能是有用的当尝试完成一个平衡在准备的统计信息和ANALYZE TABLE

执行时间

posted @ 2016-11-10 14:15  czcb  阅读(204)  评论(0编辑  收藏  举报