mysql表優化、剖析、檢討和修復的辦法詳解。本站提示廣大學習愛好者:(mysql表優化、剖析、檢討和修復的辦法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql表優化、剖析、檢討和修復的辦法詳解正文
本文實例講述了mysql表優化、剖析、檢討和修復的辦法。分享給年夜家供年夜家參考,詳細以下:
這裡引見對數據庫的治理慣例就是停止預防性的保護,和修復那些湧現成績的內容。
停止檢討和修復平日具有四個重要的義務:
1. 對表停止優化
2. 對表停止剖析(剖析並存儲MyISAM和BDB表中鍵的散布)
3. 對表停止檢討(檢討表的毛病,而且為MyISAM更新鍵的統計內容)
4. 對表停止修復(修復被損壞的MyISAM表)
1、對表停止優化
優化表有許多方法完成: OPTIMIZE TABLE語句、mysqlcheck對象(辦事器要運轉)或myisamchk(辦事器沒有運轉或表中沒有交互)
為何優化?跟著MySQL的應用,包含BLOB和VARCHAR字節的表將變得比擬繁雜,由於這些字段長度分歧,對記載停止拔出、更新或刪除時,會占領分歧年夜小的空間,記載就會釀成碎片,且留下余暇的空間。像具有碎片的磁盤,會下降機能,須要整頓,是以要優化。
1. 應用OPTIMIZE語句對表停止優化
# mysql>OPTIMIZE TABLE 表名
如許就對表名停止了優化。
2. 應用mysqlcheck對表停止優化
mysqlcheck可停止優化外,還可履行年夜量的檢討和修復義務。
# mysqlcheck -o 數據庫名 表名 -uroot -p111111 (一張表) # mysqlcheck -o 數據庫名 表名1 表名2 -uroot -p111111 (多張表) # mysqlcheck -o 數據庫名 -uroot -p111111 (對全部數據庫)
3. 應用myisamchk對表停止優化
# myisamchk --quick --check-only-changed --sort-index --analyze 表名 # myisamchk -r 表名 (參數-r表現對表停止修復,同時也刪去了糟蹋的空間) # myisamchk -r /usr/local/mysql/data/testblog/article (指定表地點的途徑)
以上操作需在辦事器封閉或沒有與辦事器互操作的時刻,可使用myisamchk敕令行對象(假如辦事器正在運轉,那末在運轉這條語句之前應用mysqladmin flush-tables對表停止刷新。需確保辦事器沒有與表停止互操作,不然會湧現毛病)。myisamchk是最老的辦法。必需在准確地位上運轉myisamchk,或許指定表地點的途徑。
留意:在優化進程中,表會被鎖住,是以不要在忙時停止優化操作。異樣,須要有足夠的空間能力停止OPTIMIZE TABLE。假如沒有磁盤空間,MySQL將不克不及停止優化,表也沒法應用。
優化是對包括MyISAM表的數據庫的慣例治理事務中一個主要環節,應當按期停止。
2、對表停止剖析
對表的按期剖析可以改良機能,且應當成為慣例保護任務的一部門。由於經由過程更新表的索引信息對表停止剖析,可改良數據庫機能。
有三種辦法可以對表停止剖析:
1. 銜接到MySQL時,應用ANALYZE TABLE語句
2. 應用mysqlcheck敕令行對象(辦事器須要運轉,而且只對MyISAM表起感化)
3. 應用myisamchk敕令行對象(辦事器不該該運轉,或無對所操作的表產生互操作)
# ANALYZE TABLE 表名; # mysqlcheck -a 數據庫名 表名 -uroot -p111111 # mysqlcheck -a 數據庫名 表名1 表名2 -uroot -p111111
假如試圖對不支撐剖析操作的表停止剖析(如InnoDB),那操作將沒法停止
# myisamchk -a /usr/local/mysql/data/數據庫/表名
願望本文所述對年夜家MySQL數據庫計有所贊助。