首頁  >  文章  >  資料庫  >  怎樣使用Mysqlcheck來檢查和修復, 優化表的詳解

怎樣使用Mysqlcheck來檢查和修復, 優化表的詳解

黄舟
黄舟原創
2017-03-20 14:00:522986瀏覽


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 分析表

$ mysqlcheck -a radius payment_transactionrecord  -uroot -pEnter password:
radius.payment_transactionrecord                   Table is already up to date

上面的指令用來分析radius 函式庫的payment_transactionrecord表, -a 表示analyze

#使用mysqlcheck 優化表

# mysqlcheck -o radius payment_transactionrecord  -uroot -pEnter password:
radius.payment_transactionrecord                   OK

-o 代表optimize ,這裡是優化radius 庫的payment_transactionrecord

使用mysqlcheck 修復表

# 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 引擎不支援最佳化,

mysqlcheck 常用選項

  • 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn