MySQL中analyze table的作用是?生产上操作会有什么风险?

MySQL中analyze table的作用是?生产上操作会有什么风险?


一、analyze table的作用
    1、analyze table 会统计索引分布信息。
    2、对于 MyISAM 表,相当于执行了一次 myisamchk --analyze
    3、支持 InnoDB、NDB、MyISAM 等存储引擎,但不支持视图(view4、执行 analyze table 时,会对表加上读锁(read lock)
    5、该操作会记录binlog



二、生产上操作的风险
    1、analyze table的需要扫描的page代价粗略估算公式:sample_pages * 索引数 * 表分区数。
    2、因此,索引数量较多,或者表分区数量较多时,执行analyze table可能会比较费时,要自己评估代价,并默认只在负载低谷时执行。
    3、特别提醒,如果某个表上当前有慢SQL,此时该表又执行analyze table,则该表后续的查询均会处于waiting for table flush的状态,严重的话会影响业务,因此执行前必须先检查有无慢查询。

备注:上面多次提到MyISAM,仅是本次总结所需,并不推荐大家使用MyISAM引擎,使用InnoDB才是正道。
原文地址:https://www.cnblogs.com/zhouwanchun/p/13141882.html