mysql維護常用命令

2021-05-11 13:48:47 字數 2690 閱讀 7842

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 維護常用命令

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