標籤:mysql 維護最佳化
●回收資料表空間
當資料表大量刪除資料時,用OPTIMIZE TABLE進行空間回收,原理時建立一張資料表,再將內容複寫到新表:
OPTIMIZE TABLE "TABLENAME";
InnoDB要用以下命令進行重建:
ALTER TABLE table.name ENGINE=‘InnoDB‘;
否則會出現錯誤:
Table does not support optimize, doing recreate + analyze instead
●檢查資料表狀態
ANALYZE TABLE ,用來檢查表鍵是否正確。
ANALYZE TABLE mmb:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/08/8E/wKiom1nkJTWRTeJGAAAPgOuRA3s166.png" title="QQ圖片20171016111854.png" alt="wKiom1nkJTWRTeJGAAAPgOuRA3s166.png" />
●CHECK TABLE 用來針對許多問題對錶進行檢查:
如下所示(摘自mysql必知必會), CHECKTABLE 發現和修複問題:
check table orders, orderitems;
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/A7/3E/wKioL1nkJpPBtSrPAABt2uytVz8513.png" title="QQ圖片20171016112857.png" alt="wKioL1nkJpPBtSrPAABt2uytVz8513.png" />
在 MyISAM 表上還對索引進行檢查。CHECK TABLE 支援一系列的用於 MyISAM 表的方式。
參數:
CHANGED 檢查自最後一次檢查以來改動過的表;
EXTENDED 執行最徹底的檢查, FAST 只檢查未正常關閉的表, MEDIUM 檢查所有被刪除的連結並進行鍵檢驗;
QUICK 只進行快速掃描;
如果 MyISAM 表訪問產生不正確和不一致的結果,可能需要用REPAIR TABLE 來修複相應的表。這條語句不應該經常使用,如果需要經常使用,可能會有更大的問題要解決。
●修改記憶體配置量和緩衝區大小等:
查看MYSQL目前狀態:
SHOW STATUS;
查看MYSQL當前設定:
SHOW VARIABLES;
修改MYSQL當前設定:
大部分參數可以用set 直接修改當前參數,但會在服務重啟後失效,所以還是得將參數寫到my.cnf檔案中.
●顯示MYSQL線程資訊SHOW PROCESSLIST
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A7/44/wKioL1nkXsSgUrvbAAAb3eTreLA663.png" title="QQ圖片20171016153555.png" alt="wKioL1nkXsSgUrvbAAAb3eTreLA663.png" />
這個command,state和info列應該是最重要的,顯示語句正在處於什麼狀態,方便分析.command狀態的數量不應該有很多,這會佔用串連池,嚴重浪費系統資源.
●KILL 進程:
kill 33; --結束id為33的進程
mysql 資料庫的維護,最佳化