需要維護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...