Mysql

為 MyISAM 表優化磁碟空間:如果您已經進行了 OPTIMIZE,ALTER 和 ANALYZE 有什麼好處?

  • June 17, 2013

根據這篇文章,為了優化 MyISAM 表的儲存,您需要:

OPTIMIZE TABLE ;
ALTER TABLE ENGINE=MyISAM ; 
ANALYZE TABLE ;

OPTIMIZE 對磁碟空間的作用很明顯,但是在 OPTIMIZE 之後使用 ALTER 和 ANALYZE 會做什麼?我專門詢問磁碟儲存,例如,我不在乎 ANALYZE 提高連接性能等。

那是我兩年前的舊 ServerFault 文章。原諒我,有點用詞不當。它應該是:

對於 MyISAM,您需要定期執行以下操作之一:

  • 優化表myisam-tablename
  • 更改表myisam-tablename引擎=MyISAM;分析表myisam-tablename

好的,我剛剛在 ServerFault 中修復了它。

澄清

OPTIMIZE TABLE tblname;執行以下操作:

ALTER TABLE ENGINE=MyISAM tblname; 
ANALYZE TABLE tblname;

根據MySQL 文件OPTIMIZE TABLE

對於 MyISAM 表,OPTIMIZE TABLE工作方式如下:

 If the table has deleted or split rows, repair the table.

 If the index pages are not sorted, sort them.

 If the table's statistics are not up to date
(and the repair could not be accomplished by sorting the index), update them.

表統計資訊的最後一部分是做什麼的ANALYZE TABLE

如果您不想OPTIMIZE TABLE tblname;執行ANALYZE TABLE tblname;,則必須ALTER TABLE tblname ENGINE=MyISAM;改為執行。

警告:對於具有大量 INSERT、UPDATE 和 DELETE 的 MyISAM 來說,這可能不是一個好主意,因為

  • 這將使表和索引統計資訊很快過時
  • 陳舊的統計資訊將導致查詢優化器對查詢 EXPLAIN 計劃做出錯誤的選擇

請堅持下去OPTIMIZE TABLE

引用自:https://dba.stackexchange.com/questions/44706