Mysql
Mysql 5.5:使用 mysqlcheck 優化所有表 - 將 -check 選項與 -optimize 一起執行是否有用?
我計劃執行 ‘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 語句。