天天看點

analyze table

# desc endpoint;
# show create table endpoint \G;
# show index  from endpoint  \G;
# show table status like 'endpoint'\G;
# optimize table endpoint \G;
# alter table endpoint engine='InnoDB';   
# check table endpoint;
# analyze table      
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才是正道。      

繼續閱讀