在介紹mysql的檢查、修復、分析、優化等知識點之前,先來了解下mysql的命令列工具mysqlcheck:
mysqlcheck -u username -p password [
-c/-r/-a/-o] dbname [tablename]
# -c check table tablename(檢查表)
# -r repair table tablename(修復表)
# -a analyze table tablename(分析表)
# -o optimize table tablename(優化表)
下面開始詳細介紹下mysql表的檢查、修復、分析和優化:
1.官網詳解
2.語法
check
table tbl_name [
, tbl_name]..
.[option].
..option:
3.作用
check table檢查乙個或多個表是否有錯誤。錯誤發生的原因有很多,例如:資料寫入磁碟時發生錯誤,或是索引沒有同步更新,或是資料庫未關閉mysql就停止了等等。
check table適用於 innodb, myisam, archive,和 csv**。
對於myisam表,鍵統計資訊也會更新;check table還可以檢查檢視是否存在問題,例如檢視定義中引用的表不再存在;在執行之前check table對 innodb表;check table支援分割槽表,您可以alter table … check partition用來檢查乙個或多個分割槽;
4.結果集解析
check table tablename;
正常情況如下:
table
opmsg_type
msg_text
dbname
check
status
ok欄位解析:
字段解析
table
表名op
總是check
msg_type
status,error, info,note,或 warning
msg_text
資訊性訊息
注意:對於myisam表,如果沒有得到ok或table is already up to date,通常應修復該錶。table is already up to date表示該錶的儲存引擎指示無需檢查該錶。
1.官網詳解
2.語法
repair [no_write_to_binlog |
local
]table tbl_name [
, tbl_name]..
.[quick][
extended
][use_frm]
(1)no_write_to_binlog或local
預設情況下,伺服器將repair table語句寫入二進位制日誌,以便它們複製到副本。要禁止記錄日誌,請指定可選no_write_to_binlog關鍵字或其別名local。
(2)quick
如果使用該quick選項,則 repair table嘗試僅修復索引檔案,而不修復資料檔案。這種修復類似於myisamchk --recover --quick所做的修復。
(3)extended
如果使用該extended選項,mysql將逐行建立索引,而不是通過排序一次建立乙個索引。這種修復類似於myisamchk --safe-recover進行的修復。
(4)use_frm
use_frm如果.myi索引檔案丟失或其標題損壞,則可以使用 該選項。該選項告訴mysql不信任.myi 檔案頭中的資訊,並使用.frm檔案中的資訊重新建立它 。使用myisamchk無法完成這種修復。
3.作用
repair table 僅對於某些儲存引擎,修復可能損壞的表。
儘管通常不必執行 repair table,但是如果發生災難,此語句很可能從myisam表中取回所有資料。如果您的表經常損壞,請嘗試找出原因,以消除使用的需要repair table。
repair table檢查表以檢視是否需要公升級。如果是這樣,它將按照與相同的規則執行公升級 check table … for upgrade。
repair table工程 myisam, archive和 csv表。對於 myisam表,預設情況下它與myisamchk --recover tbl_name具有相同的效果。該語句不適用於檢視。
repair table支援分割槽表。但是,該use_frm 選項不能與分割槽表上的該語句一起使用。
您可以alter table … repair partition用來修復乙個或多個分割槽。
4.結果集解析字段
解析table
表名op
總是repair
msg_type
status,error, info,note,或 warning
msg_text
資訊性訊息
1.官網詳解
2.語法
analyze
[no_write_to_binlog |
local
]table tbl_name [
, tbl_name]..
.
3.作用
analyze table執行鍵分布分析並儲存乙個或多個命名表的分布。對於myisam表,此語句等效於使用myisamchk --analyze。
該宣告要求select 和insert對錶的許可權。
analyze table有工作 innodb,ndb和 myisam表。它不適用於檢視。
analyze table支援分割槽表,您可以alter table … analyze partition用來分析乙個或多個分割槽;
在分析過程中,該錶已被鎖定與讀鎖 innodb和myisam。
analyze table從表定義快取中刪除該錶,這需要重新整理鎖。如果仍有長時間執行的語句或事務仍在使用該錶,則後續的語句和事務必須等待這些操作完成才能釋放重新整理鎖。因為analyze table它本身通常很快完成,所以顯然看不到涉及同一表的延遲事務或語句是由於剩餘的重新整理鎖引起的。
預設情況下,伺服器將analyze table語句寫入二進位制日誌,以便它們複製到副本。要禁止記錄日誌,請指定可選 no_write_to_binlog關鍵字或其別名 local。
4.結果集解析字段
解析table
表名op
總是analyze
msg_type
status,error, info,note,或 warning
msg_text
資訊性訊息
1.官網詳解
2.語法
optimize
[no_write_to_binlog |
local
]table tbl_name [
, tbl_name]..
.
3.作用
optimize table重新組織表資料和關聯索引資料的物理儲存,以減少儲存空間並提高訪問表時的i / o效率。對每個表所做的確切更改取決於該錶使用的 儲存引擎。
4.結果集解析字段
解析table
表名op
總是optimize
msg_type
status,error, info,note,或 warning
msg_text
資訊性訊息
optimize table表捕獲並引發將表統計資訊從舊檔案複製到新建立的檔案時發生的任何錯誤。例如。如果所有者的使用者id .frm,.myd或 .myi檔案是從的使用者id不同的mysqld過程, optimize table除非生成乙個「不能改變檔案的所有權」錯誤 的mysqld由啟動 root使用者。
1.官網詳解
2.語法
checksum table tbl_name [
, tbl_name]..
.[quick
|extended
]
3.作用
checksum table報告 表內容的校驗和。您可以使用此語句來驗證備份,回滾或其他旨在將資料恢復為已知狀態的操作前後的內容是否相同。
Mysql分析 檢查 優化表
對錶進行分析 分析關鍵字的分布,分析儲存myisam等表中鍵的分布 mysql中使用analyze table語句來分析表,該語句的基本語法如下 mysql analyze table 表名1 表名2 使用analyze table分析表的過程中,資料庫系統會對錶加乙個唯讀鎖。在分析期間,只能讀取表...
Mysql分析 檢查 優化表 分析表
1.分析表 對錶進行分析 分析關鍵字的分布,分析儲存myisam等表中鍵的分布 mysql中使用analyze table語句來分析表,該語句的基本語法如下 mysql analyze table 表名1 表名2 使用analyze table分析表的過程中,資料庫系統會對錶加乙個唯讀鎖。在分析期間...
mysql 修復表 優化表
查詢mysql表是否被損壞命令,如下 check table 表名 mysql的長期使用,肯定會出現一些問題,一般情況下mysql表無法訪問,就可以修復表了,優化時減少磁碟占用空間。方便備份。表修復和優化命令,如下 repair table table name 修復表 optimize table...