Mysql

Mysql 5.5:使用 mysqlcheck 優化所有表 - 將 -check 選項與 -optimize 一起執行是否有用?

  • July 25, 2013

我計劃執行 ‘mysqlcheck –optimize –all-databases’ 來清理一些碎片。

使用此選項執行 -check 是否有用,或者 -optimize 是否已經解決了這個問題?我只是擔心,因為我們有大表(超過 100GB),而且這是在生產系統上,我們不希望有不必要的停機時間。

湯姆。

好吧,我至少可以為您節省一些時間來思考這個問題。該mysqlcheck實用程序一次只做一件事。

sqlbot@dev:~$ mysqlcheck --check --optimize --all-databases --verbose
Error:  mysqlcheck doesn't support multiple contradicting commands.

所以,如果你想兩者都做,你需要執行 2 次。雖然--optimize似乎沒有首先通過相同的動作來“檢查”表格,但它確實重建了它們,這意味著它必須能夠成功讀取它們。

根據文件,我從未見過CHECK TABLE發現 InnoDB 表的新問題,但如果確實如此,InnoDB 將關閉 MySQL 伺服器……我認為“關閉”可能意味著“強制崩潰”以遏制腐敗。另一方面,如果您有損壞的表,OPTIMIZE TABLE(在 InnoDB 中)可能會以幾乎相同的方式“幫助您找到”該損壞。

可以說,在優化之前檢查表格似乎是多餘的,儘管我歡迎在這一點上進行更正;但是,面對您將要重建的如此大量數據,在啟動“優化”過程之前花時間執行不太引人注目的“檢查”過程似乎也是明智之舉。

在後台,mysqlcheck真正要做的就是作為客戶端連接到伺服器並執行相應的 SQL 語句

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