mysqlcheck 是 MySQL 自帶的工具,作用是
保養
表,其實就是檢查,分析,修復和優化了。以下來介紹mysqlcheck 工具的簡單使用,官方文件在這裡
以下的例子都是基於MySQL 5.6 版本運行狀態下(mysqlcheck是個在線工具), 不同的存儲引擎對於這個命令的支持程度不同(指的是check, repair, analyze, optimize),以下內容偏於操作,主要基於innodb 引擎。
提示:OPTIMIZE 在大表時候可能會消耗很多時間,不清楚原理情況下請謹慎使用!!! innodb 一般不用OPTIMIZE,請參閱Using MySQL OPTIMIZE tables? For InnoDB? Stop
注意在shell中執行,不是在mysql的交互環境下
#如果應用程式中提示某個表壞了,使用下面的命令來檢查。
$ mysqlcheck -c newmandela order -uroot -pEnter password: newmandela.order OK
newmandela 是庫名, order是表名,還需要輸入使用者名稱和密碼
$ mysqlcheck -c newmandela -uroot -p Enter password: newmandela.account OK newmandela.alarm OK newmandela.alarm_settings OK newmandela.auth_group OK newmandela.auth_group_permissions OK newmandela.auth_permission OK...
全部的函式庫和表格都檢查一遍了。
$mysqlcheck -c --all-databases -uroot -p Enter password: apmonitor.acinfo OK apmonitor.apdailysts OK apmonitor.apinfo OK apmonitor.apmonthsts OK apmonitor.apscanlog OK apmonitor.auth_group OK...
如果只想檢查某幾個函式庫呢?可以使用–databases 參數
$ mysqlcheck -c --databases newmandela radius -uroot -p Enter password: newmandela.account OK newmandela.alarm OK newmandela.alarm_settings OK newmandela.auth_group OK...
$ mysqlcheck -a radius payment_transactionrecord -uroot -pEnter password: radius.payment_transactionrecord Table is already up to date
上面的指令用來分析radius 函式庫的payment_transactionrecord
表, -a
表示analyze
# mysqlcheck -o radius payment_transactionrecord -uroot -pEnter password: radius.payment_transactionrecord OK
-o
代表optimize ,這裡是優化radius 庫的payment_transactionrecord
表
# mysqlcheck -r radius payment_transactionrecord -uroot -pEnter password: radius.payment_transactionrecord OK
-r
代表repair ,這裡是修復radius 庫的payment_transactionrecord
#表
# mysqlcheck -uroot -p --auto-repair -c -o newmandelaError: mysqlcheck doesn't support multiple contradicting commands.
上面的指令報錯了,去掉-c
# mysqlcheck -uroot -p --auto-repair -o newmandelaEnter password: newmandela.account note : Table does not support optimize, doing recreate + analyze instead status : OK newmandela.alarm note : Table does not support optimize, doing recreate + analyze instead status : OK newmandela.alarm_settings note : Table does not support optimize, doing recreate + analyze instead status : OK
每張表都出現了Table does not support optimize, doing recreate + analyze instead
, 代表什麼意思呢? 它的意思不是說innodb 引擎不支援最佳化,
A, –all-databases
表示所有函式庫
-a, –analyze
分析表
-o, –optimize
最佳化表格
-r, –repair
修正表格錯誤
#-c, –check
檢查表是否出錯
–auto-repair
自動修復損壞的表格
-B, –databases
#選擇多個函式庫
-1, –all-in-1
Use one query per database with tables listed in a comma separated way
#-C, –check-only-changed
檢查表最後一次檢查之後的變動
-g, –check- upgrade
Check for version dependent changes in the tables
-F, –fast
Check tables that are not closed properly
–fix-db-names
Fix DB names
#–fix-table-names
Fix table names
-f, –force
Continue even when there is an error
-e, –extended
Perform extended check on a table. This will take a long time to execute.
-m, –medium-check
Faster than extended check option, but does most checks
-q, –quick
Faster than medium check option
以上是怎樣使用Mysqlcheck來檢查和修復, 優化表的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!