明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

如何使用Mysqlcheck來檢查與修好, 優(yōu)化表的詳細(xì)說明

[摘要]mysqlcheck 是 MySQL 自帶的一個(gè)工具,作用就是保養(yǎng) 表,其實(shí)就是檢查,分析,修復(fù)和優(yōu)化了。下面來介紹 mysqlcheck 工具的簡單使用,官方文檔在這里以下的例子都是基于 MySQL 5.6 版本運(yùn)行狀態(tài)下(mysqlcheck是個(gè)在線工具), 不同的存儲引擎對于這個(gè)命令的支...


mysqlcheck 是 MySQL 自帶的一個(gè)工具,作用就是保養(yǎng) 表,其實(shí)就是檢查,分析,修復(fù)和優(yōu)化了。下面來介紹 mysqlcheck 工具的簡單使用,官方文檔在這里

以下的例子都是基于 MySQL 5.6 版本運(yùn)行狀態(tài)下(mysqlcheck是個(gè)在線工具), 不同的存儲引擎對于這個(gè)命令的支持程度不同(指的是 check, repair, analyze, optimize),下面內(nèi)容偏于操作,主要基于 innodb 引擎。

提示:OPTIMIZE 在大表時(shí)候可能會(huì)消耗很多時(shí)間,不清楚原理情況下請謹(jǐn)慎使用!!! innodb 一般不用 OPTIMIZE,請參見 Using MySQL OPTIMIZE tables? For InnoDB? Stop

檢查特定的表

注意在shell中執(zhí)行,不是在mysql的交互環(huán)境下

如果應(yīng)用中提示某個(gè)表壞了,使用下面的命令來檢查。

$ mysqlcheck -c newmandela order -uroot -pEnter password:
newmandela.order                                   
OK

newmandela 是庫名, order是表名,還需要輸入用戶名和密碼

檢查一個(gè)庫中的所有表

$ 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...

如果只想檢查某幾個(gè)庫呢? 可以使用 –databases 參數(shù)

$ 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 優(yōu)化表

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

-o 代表 optimize ,這里是優(yōu)化 radius 庫的 payment_transactionrecord

使用 mysqlcheck 修復(fù)表

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

-r 代表 repair ,這里是 修復(fù) radius 庫的 payment_transactionrecord

檢查,優(yōu)化,修復(fù)表組合命令

# mysqlcheck -uroot -p --auto-repair -c -o newmandelaError:  mysqlcheck doesn't support multiple contradicting commands.

上面的命令報(bào)錯(cuò)了,去掉 -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

每張表都出現(xiàn)了 Table does not support optimize, doing recreate + analyze instead, 代表什么意思呢? 它的意思不是說 innodb 引擎不支持 優(yōu)化,

mysqlcheck 常用選項(xiàng)

  • A, –all-databases 表示所有庫

  • -a, –analyze 分析表

  • -o, –optimize 優(yōu)化表

  • -r, –repair 修復(fù)表錯(cuò)誤

  • -c, –check 檢查表是否出錯(cuò)

  • –auto-repair 自動(dòng)修復(fù)損壞的表

  • -B, –databases 選擇多個(gè)庫

  • -1, –all-in-1 Use one query per database with tables listed in a comma separated way

  • -C, –check-only-changed 檢查表最后一次檢查之后的變動(dòng)

  • -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來檢查和修復(fù), 優(yōu)化表的詳解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。