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

13.7.2.1分析TABLE语句

分析[NO_WRITE_TO_BINLOG |本地)表tbl_name(,tbl_name)……

分析表执行的主要分布分析和存储指定的表或表。为MyISAM表,这个表述相当于使用myisamchk——分析

这个声明要求选择插入表的特权。

分析表适用于InnoDB,NDB,MyISAM表。它不工作的观点。

分析表支持分区表,可以使用吗ALTER TABLE……分析分区分析一个或多个分区;有关更多信息,请参见部分13.1.8,“ALTER TABLE语句”,部分22.3.4,“维护分区”

在分析过程中,表锁和读锁InnoDBMyISAM

分析表删除表的表定义缓存,这需要冲洗锁。如果有长时间运行的语句或交易仍在使用,后续语句和事务必须等待这些操作完成之前,冲洗释放锁。因为分析表本身通常很快结束,可能不明显,延迟或语句包含相同的表的事务将其余平锁。

默认情况下,服务器写道分析表语句的二进制日志,这样他们复制副本。抑制日志,指定可选的NO_WRITE_TO_BINLOG关键字或其别名当地的

分析表的输出

分析表返回一个结果集的列如下表所示。

价值
表名
人事处 总是分析
Msg_type 状态,错误,信息,请注意,或警告
Msg_text 一个信息性消息
主要分布分析

如果表没有改变自上次键分布分析,表不分析了。

MySQL使用存储密钥分发决定加入的表连接顺序不是一个常数。此外,可以使用主要分布在决定使用哪个索引为一个特定的表中查询。

检查存储密钥分发基数,使用显示指数声明或INFORMATION_SCHEMA统计数据表。看到部分13.7.5.22,“显示指数声明”,部分24.3.24,“INFORMATION_SCHEMA统计数据表”

InnoDB表,分析表决定通过执行随机指数基数潜水在每个索引树和更新索引的基数估计值。因为这些只是估计,重复运行分析表可以产生不同的数字。这使得分析表快速上InnoDB表但不是100%准确,因为它没有考虑到所有行。

你可以使统计数据收集的分析表使更精确,更稳定innodb_stats_persistent解释说,部分14.8.11.1”,持续优化配置统计参数”。当innodb_stats_persistent启用时,重要的是运行吗分析表主要更改索引列数据后,数据不定期重新计算(如服务器重启后)。

如果innodb_stats_persistent启用,您可以更改数量的随机潜水通过修改吗innodb_stats_persistent_sample_pages系统变量。如果innodb_stats_persistent被禁用,修改innodb_stats_transient_sample_pages代替。

关于密钥分发的更多信息分析InnoDB,请参阅部分14.8.11.1”,持续优化配置统计参数”,部分14.8.11.3,“估计分析表的复杂性为InnoDB表”

MySQL连接优化使用指数基数估计值。如果连接没有以正确的方式进行了优化,尝试运行分析表。在少数情况下,分析表不会产生足够好为您的特定值表,您可以使用吗力指数与您的查询强制使用一个特定的指数,或设置max_seeks_for_key系统变量,以确保MySQL喜欢索引查找表扫描。看到部分B.3.5,“优化器相关的问题”

其他的考虑

分析表清除表统计数据INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS表和设置STATS_INITIALIZED未初始化。再次收集统计下次访问表。