MySQL中analyze table的作用是?生產上操作會有什么風險? 一、analyze table的作用 1、analyze table 會統計索引分布信息。 2、對於 MyISAM 表,相當於執行了一次 myisamchk --analyze 3、支持 InnoDB、NDB、MyISAM 等存儲引擎,但不支持視圖(view) 4、執行 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才是正道。