mysql表優(yōu)化、分析、檢查和修復(fù)的方法詳解
本文實例講述了mysql表優(yōu)化、分析、檢查和修復(fù)的方法。分享給大家供大家參考,具體如下:
這里介紹對數(shù)據(jù)庫的管理常規(guī)就是進行預(yù)防性的維護,以及修復(fù)那些出現(xiàn)問題的內(nèi)容。
進行檢查和修復(fù)通常具有四個主要的任務(wù):
1. 對表進行優(yōu)化
2. 對表進行分析(分析并存儲MyISAM和BDB表中鍵的分布)
3. 對表進行檢查(檢查表的錯誤,并且為MyISAM更新鍵的統(tǒng)計內(nèi)容)
4. 對表進行修復(fù)(修復(fù)被破壞的MyISAM表)
一、對表進行優(yōu)化
優(yōu)化表有很多方式實現(xiàn): OPTIMIZE TABLE語句、mysqlcheck工具(服務(wù)器要運行)或myisamchk(服務(wù)器沒有運行或表中沒有交互)
為什么優(yōu)化?隨著MySQL的使用,包括BLOB和VARCHAR字節(jié)的表將變得比較繁冗,因為這些字段長度不同,對記錄進行插入、更新或刪除時,會占有不同大小的空間,記錄就會變成碎片,且留下空閑的空間。像具有碎片的磁盤,會降低性能,需要整理,因此要優(yōu)化。
1. 利用OPTIMIZE語句對表進行優(yōu)化
# mysql>OPTIMIZE TABLE 表名
這樣就對表名進行了優(yōu)化。
2. 利用mysqlcheck對表進行優(yōu)化
mysqlcheck可進行優(yōu)化外,還可執(zhí)行大量的檢查和修復(fù)任務(wù)。
# mysqlcheck -o 數(shù)據(jù)庫名 表名 -uroot -p111111 (一張表) # mysqlcheck -o 數(shù)據(jù)庫名 表名1 表名2 -uroot -p111111 (多張表) # mysqlcheck -o 數(shù)據(jù)庫名 -uroot -p111111 (對整個數(shù)據(jù)庫)
3. 利用myisamchk對表進行優(yōu)化
# myisamchk --quick --check-only-changed --sort-index --analyze 表名 # myisamchk -r 表名 (參數(shù)-r表示對表進行修復(fù),同時也刪去了浪費的空間) # myisamchk -r /usr/local/mysql/data/testblog/article (指定表所在的路徑)
以上操作需在服務(wù)器關(guān)閉或沒有與服務(wù)器互操作的時候,可以使用myisamchk命令行工具(如果服務(wù)器正在運行,那么在運行這條語句之前利用mysqladmin flush-tables對表進行刷新。需確保服務(wù)器沒有與表進行互操作,否則會出現(xiàn)故障)。myisamchk是最老的方法。必須在正確位置上運行myisamchk,或者指定表所在的路徑。
注意:在優(yōu)化過程中,表會被鎖住,因此不要在忙時進行優(yōu)化操作。同樣,需要有足夠的空間才能進行OPTIMIZE TABLE。如果沒有磁盤空間,MySQL將不能進行優(yōu)化,表也無法使用。
優(yōu)化是對包含MyISAM表的數(shù)據(jù)庫的常規(guī)管理事務(wù)中一個重要環(huán)節(jié),應(yīng)該定期進行。
二、對表進行分析
對表的定期分析可以改善性能,且應(yīng)該成為常規(guī)維護工作的一部分。因為通過更新表的索引信息對表進行分析,可改善數(shù)據(jù)庫性能。
有三種方法可以對表進行分析:
1. 連接到MySQL時,使用ANALYZE TABLE語句
2. 利用mysqlcheck命令行工具(服務(wù)器需要運行,并且只對MyISAM表起作用)
3. 利用myisamchk命令行工具(服務(wù)器不應(yīng)該運行,或無對所操作的表發(fā)生互操作)
# ANALYZE TABLE 表名; # mysqlcheck -a 數(shù)據(jù)庫名 表名 -uroot -p111111 # mysqlcheck -a 數(shù)據(jù)庫名 表名1 表名2 -uroot -p111111
如果試圖對不支持分析操作的表進行分析(如InnoDB),那操作將無法進行
# myisamchk -a /usr/local/mysql/data/數(shù)據(jù)庫/表名
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
- mysql數(shù)據(jù)庫索引損壞及修復(fù)經(jīng)驗分享
- MySQL中主從復(fù)制重復(fù)鍵問題修復(fù)方法
- MySQL數(shù)據(jù)庫修復(fù)方法(MyISAM/InnoDB)
- MySQL數(shù)據(jù)庫表修復(fù) MyISAM
- 教您修復(fù)mysql數(shù)據(jù)庫的方法
- MySQL數(shù)據(jù)庫INNODB表損壞修復(fù)處理過程分享
- mysql下優(yōu)化表和修復(fù)表命令使用說明(REPAIR TABLE和OPTIMIZE TABLE)
- MYSQL數(shù)據(jù)表損壞的原因分析和修復(fù)方法小結(jié)(推薦)
- MySQL數(shù)據(jù)表損壞的正確修復(fù)方案
- Mysql數(shù)據(jù)庫之索引優(yōu)化
- Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE
- Jemalloc優(yōu)化MySQL和Nginx
- 關(guān)于MySQL 優(yōu)化的100個的建議
相關(guān)文章
低版本Druid連接池+MySQL驅(qū)動8.0導(dǎo)致線程阻塞、性能受限
應(yīng)用升級MySQL驅(qū)動8.0后,在并發(fā)量較高時,查看監(jiān)控打點,Druid連接池拿到連接并執(zhí)行SQL的時間大部分都超過200ms,本文就解決一下這個問題2021-07-07php運行提示Can''t connect to MySQL server on ''localhost''的解決方法
有些時候我們運行php的時候,頁面提示Can't connect to MySQL server on 'localhost',那么就需要參考下面的方法來解決。2011-06-06mysql數(shù)據(jù)庫limit的四種用法小結(jié)
mysql數(shù)據(jù)庫中l(wèi)imit子句可以被用于強制select語句返回指定的記錄數(shù),本文主要介紹了mysql數(shù)據(jù)庫limit的四種用法小結(jié),感興趣的可以了解一下2023-10-10MySQL中查詢當天數(shù)據(jù)中離時間點最近的數(shù)據(jù)(兩種方法)
在 MySQL 中,你可以使用 ORDER BY 和 LIMIT 語句來查詢當天數(shù)據(jù)中離指定時間最近的數(shù)據(jù),本文給大家介紹MySQL中查詢當天數(shù)據(jù)中離時間點最近的數(shù)據(jù),感興趣的朋友一起看看吧2023-12-12CentOS 7.2下MySQL的安裝與相關(guān)配置
最近因為工作需要,要在CentOS上安裝MySQL,在安裝的時候遇到了一點問題,花了點時間解決了,感覺不管是官網(wǎng)還是網(wǎng)上的一些教程都不夠完整,不能一次性幫新手解決問題,于是我就結(jié)合官網(wǎng)和網(wǎng)上的資源整理了下,現(xiàn)在分享給大家,希望對有需要的朋友們能有所幫助。2016-11-11