分析[NO_WRITE_TO_BINLOG |本地)表tbl_name(,tbl_name)……
分析表
执行的主要分布分析和存储指定的表或表。为MyISAM
表,这个表述相当于使用myisamchk——分析。
分析表
适用于InnoDB
,NDB
,MyISAM
表。它不工作的观点。
分析表
支持分区表,可以使用吗ALTER TABLE……分析分区
分析一个或多个分区;有关更多信息,请参见部分13.1.8,“ALTER TABLE语句”,部分22.3.4,“维护分区”。
在分析过程中,表锁和读锁InnoDB
和MyISAM
。
分析表
删除表的表定义缓存,这需要冲洗锁。如果有长时间运行的语句或交易仍在使用,后续语句和事务必须等待这些操作完成之前,冲洗释放锁。因为分析表
本身通常很快结束,可能不明显,延迟或语句包含相同的表的事务将其余平锁。
默认情况下,服务器写道分析表
语句的二进制日志,这样他们复制副本。抑制日志,指定可选的NO_WRITE_TO_BINLOG
关键字或其别名当地的
。
如果表没有改变自上次键分布分析,表不分析了。
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
列未初始化
。再次收集统计下次访问表。