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