mysql 維護常用命令

2021-09-20 19:48:14 字數 2654 閱讀 6067

需要維護mysql資料庫的朋友可以參考下。 

analyze table

mysql 的optimizer(優化元件)在優化sql語句時,首先需要收集一些相關資訊,其中就包括表的cardinality(可以翻譯為「雜湊程度」),它表示某個索引對應的列包含多少個不同的值——如果cardinality大大少於資料的實際雜湊程度,那麼索引就基本失效了。 

我們可以使用show index語句來檢視索引的雜湊程度: 

show index from players; 

table key_name column_name cardinality 

------- -------- ----------- ----------- 

players primary playerno 14 

因為此時player表中不同的playerno數量遠遠多於14,索引基本失效。 

下面我們通過analyze table語句來修復索引: 

analyze table players; 

show index from players; 

結果是: 

table key_name column_name cardinality 

------- -------- ----------- ----------- 

players primary playerno 1000 

此時索引已經修復,查詢效率大大提高。 

需要注意的是,如果開啟了binlog,那麼analyze table的結果也會寫入binlog,我們可以在analyze和table之間新增關鍵字local取消寫入。 

checksum table

資料在傳輸時,可能會發生變化,也有可能因為其它原因損壞,為了保證資料的一致,我們可以計算checksum(校驗值)。 

使用myisam引擎的表會把checksum儲存起來,稱為live checksum,當資料發生變化時,checksum會相應變化。 

在執行checksum table時,可以在最後指定選項qiuck或是extended;qiuck表示返回儲存的checksum值,而extended會重新計算checksum,如果沒有指定選項,則預設使用extended。 

optimize table

經常更新資料的磁碟需要整理碎片,資料庫也是這樣,optimize table語句對myisam和innodb型別的表都有效。 

如果表經常更新,就應當定期執行optimize table語句,保證效率。 

與analyze table一樣,optimize table也可以使用local來取消寫入binlog。 

check table

資料庫經常可能遇到錯誤,譬如資料寫入磁碟時發生錯誤,或是索引沒有同步更新,或是資料庫未關閉mysql就停止了。 

遇到這些情況,資料就可能發生錯誤: 

incorrect key file for table: ' '. try to repair it. 

此時,我們可以使用check table語句來檢查表及其對應的索引。 

譬如我們執行 

check table players; 

結果是 

table op msg_type msg_text 

-------------- ----- -------- -------- 

tennis.players check status ok 

mysql會儲存表最近一次檢查的時間,每次執行check table都會儲存這些資訊: 

執行 select table_name, check_time 

from information_schema.tables 

where table_name = 'players' 

and table_schema = 'tennis'; 

結果是 

table_name check_time 

---------- ------------------- 

players 2006-08-21 16:44:25 

check table還可以指定其它選項: 

upgrade:用來測試在更早版本的mysql中建立的表是否與當前版本相容。 

quick:速度最快的選項,在檢查各列的資料時,不會檢查鏈結(link)的正確與否,如果沒有遇到什麼問題,可以使用這個選項。 

fast:只檢查表是否正常關閉,如果在系統掉電之後沒有遇到嚴重問題,可以使用這個選項。 

changed:只檢查上次檢查時間之後更新的資料。 

medium:預設的選項,會檢查索引檔案和資料檔案之間的鏈結正確性。 

extended:最慢的選項,會進行全面的檢查。 

repair table

用於修復表,只對myisam和archive型別的表有效。 

這條語句同樣可以指定選項: 

quick:最快的選項,只修復索引樹。 

extended:最慢的選項,需要逐行重建索引。 

use_frm:只有當myi檔案丟失時才使用這個選項,全面重建整個索引。 

與analyze table一樣,repair table也可以使用local來取消寫入binlog。

mysql維護常用命令

analyze table mysql 的optimizer 優化元件 在優化sql語句時,首先需要收集一些相關資訊,其中就包括表的cardinality 可以翻譯為 雜湊程度 它表示某個索引對應的列包含多少個不同的值 如果cardinality大大少於資料的實際雜湊程度,那麼索引就基本失效了。我們...

mysql基本常用命令 MySQL常用命令(一)

cmd提示框中的mysql基礎命令 一 命令 連線mysql伺服器 mysql h localhost u root p 展示所有資料庫 show databases 選擇資料庫 use database 展示所選資料下所有表 show tables 設定資料庫編碼 set names gbk 用s...

mysql巡檢常用命令 mysql 常用命令

客戶端連線 進入命令列,windows cmd,連線 mysql u 使用者名稱 p密碼 h 伺服器ip位址 p 伺服器端mysql埠號 d 資料庫名 注意 1 伺服器端口標誌 p一定要大些以區別於使用者 p,如果直接連線資料庫標誌 d也要大寫 2 如果要直接輸入密碼 p後面不能留有空格如 pmyp...