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才是正道。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM