MySQL表檢查與修復(fù) — check/repair指令
本文主要講check table和repair table指令;
1. 指令詳解
在檢查、修復(fù)表,除了用myisamchk指令,還可以用check table、repair table指令。(指令不區(qū)分大小寫)
- 檢查表是否有錯誤
CHECK TABLE對MyISAM和InnoDB表有作用。
對于MyISAM表,關(guān)鍵字統(tǒng)計信息會被更新,CHECK TABLE也可以檢查視圖是否有錯誤,比如在視圖定義中被引用的表已不存在。
名詞解釋:
- InnoDB,是MySQL的數(shù)據(jù)庫引擎之一,現(xiàn)為MySQL的默認(rèn)存儲引擎,為MySQL AB發(fā)布binary的標(biāo)準(zhǔn)之一。
- MyISAM是MySQL的默認(rèn)數(shù)據(jù)庫引擎(5.5版之前),由早期的ISAM所改良。雖然性能極佳,但卻有一個缺點(diǎn):不支持事務(wù)處理(transaction)。不過,在這幾年的發(fā)展下,MySQL也導(dǎo)入了InnoDB(另一種數(shù)據(jù)庫引擎),以強(qiáng)化參照完整性與并發(fā)違規(guī)處理機(jī)制,后來就逐漸取代MyISAM。
說明:
一些只對myisam表有作用(對innodb和視圖無效)的選項介紹:
- QUICK:不掃描行,不檢查錯誤的鏈接。
- FAST:只檢查沒有被正確關(guān)閉的表。
- CHANGED:只檢查自上次檢查后被更改的表,和沒有被正確關(guān)閉的表。
- MEDIUM:掃描行,以驗證被刪除的鏈接是有效的。也可以計算各行的關(guān)鍵字校驗和,并使用計算出的校驗和驗證這一點(diǎn)。
- EXTENDED:對每行的所有關(guān)鍵字進(jìn)行一個全面的關(guān)鍵字查找。這可以確保表是100%一致的,但是花的時間較長,所以很少使用。
- 修復(fù)有錯誤的表
REPAIR TABLE 用于修復(fù)被破壞的表。
默認(rèn)情況下,REPAIR TABLE與myisamchk --recover tbl_name具有相同的效。
REPAIR TABLE對MyISAM和ARCHIVE表起作用
語法如下:
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
quick:repair只修復(fù)索引,等價于“myisamchk --recover --quick tablename”
extended:MySQL會一行一行地創(chuàng)建索引行,等價于”myisamchk --safe-recover tablename“
use_frm:如果.MYI索引文件缺失或標(biāo)題被破壞,則使用此選項,用來自.frm文件重新創(chuàng)建.MYI文件。這種修復(fù)不能使用myisamchk來完成;在repair常規(guī)無法完成時,才會使用這個選項,如果表被壓縮不能使用。
no_write_to_binlog:repair默認(rèn)是寫到二進(jìn)制文件的,如果有主從模式的話,repair也會在從庫執(zhí)行;使用此選項將會禁止寫入到二進(jìn)制文件中。
2. 操作方法:
命令提示符(cmd指令)操作方法
- 輸入cmd進(jìn)入命令提示符
- 登錄MySQL
輸入指令msyql -u用戶名 -p密碼
注意:指令必須遵循上圖格式,空格不能少也不能多; - 選擇數(shù)據(jù)庫
MySQL中可以創(chuàng)建多個數(shù)據(jù)庫,先選擇再操作;
注意:分號(;)不能省略。
注意:如果你記住了庫名,不需要顯示所有庫的步驟。
- 檢查表或者修復(fù)表
自此可以輸入check table指令檢查表,也可以輸入repair table修復(fù)表。下圖為檢查表。
mysql> check table t1 medium;
等價于
# myisamchk --medium-check tablename
-
快速檢查沒有被正確關(guān)閉的表
mysql> check table 表名 quick fast;
注意:操作到步驟1.4就可以了。文章來源:http://www.zghlxwxcb.cn/news/detail-540958.html
SQLyog 操作方法(推薦)
SQLyog 是圖像界面操作更直觀,更簡單。操作邏輯和指令是一樣的,沒有區(qū)別;
下圖,我用repair table指令做例子,所有的指令操作都是如此;文章來源地址http://www.zghlxwxcb.cn/news/detail-540958.html
- 打開SQLyog
- 輸入指令
- 執(zhí)行指令
操作成功如下圖:
注意:數(shù)據(jù)表越大操作越慢
到了這里,關(guān)于MySQL 數(shù)據(jù)表修復(fù)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!