mysql刪除數(shù)據(jù)后空間沒(méi)變小 MysqlInnoDB刪除數(shù)據(jù)后釋放磁盤(pán)空間的方法?
MysqlInnoDB刪除數(shù)據(jù)后釋放磁盤(pán)空間的方法?InnoDB數(shù)據(jù)庫(kù)只將刪除的數(shù)據(jù)標(biāo)記為已刪除,并沒(méi)有真正釋放占用的磁盤(pán)空間,導(dǎo)致InnoDB數(shù)據(jù)庫(kù)文件不斷增長(zhǎng)。如果在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)設(shè)置了InnoDB
MysqlInnoDB刪除數(shù)據(jù)后釋放磁盤(pán)空間的方法?
InnoDB數(shù)據(jù)庫(kù)只將刪除的數(shù)據(jù)標(biāo)記為已刪除,并沒(méi)有真正釋放占用的磁盤(pán)空間,導(dǎo)致InnoDB數(shù)據(jù)庫(kù)文件不斷增長(zhǎng)。如果在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)設(shè)置了InnoDB,那么InnoDB將為每個(gè)表創(chuàng)建一個(gè)數(shù)據(jù)文件,然后運(yùn)行optimize Table命令釋放所有刪除的磁盤(pán)空間。運(yùn)行optimize table name后,雖然最終的報(bào)表會(huì)是table不支持optimize,但是如果不設(shè)置這個(gè)參數(shù),要釋放空間,完全釋放刪除的數(shù)據(jù),需要導(dǎo)出數(shù)據(jù)庫(kù),刪除InnoDB數(shù)據(jù)庫(kù)文件,然后倒進(jìn)去?;静襟E如下:1使用mysqldump命令導(dǎo)出InnoDB數(shù)據(jù)庫(kù);2停止MySQL;3刪除所有InnoDB數(shù)據(jù)庫(kù)文件和日志;4啟動(dòng)MySQL并自動(dòng)重建InnoDB數(shù)據(jù)庫(kù)文件和日志;5導(dǎo)入以前備份的數(shù)據(jù)庫(kù)文件#備份數(shù)據(jù)庫(kù):mysqldump-uroot-root--quick--force--all Databases> mysqldump.sql#停止數(shù)據(jù)庫(kù)服務(wù)mysqld Stop?刪除這些大文件RM/usr/local/MySQL/var/ibdata1rm/usr/local/MySQL/var/IB?Logfile*?手動(dòng)刪除除MySQL以外的所有數(shù)據(jù)庫(kù)文件夾,然后啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)mysqld start?還原數(shù)據(jù)MySQL-uroot-proot<mysqldump.sql文件
mysql數(shù)據(jù)庫(kù)都刪除了空間還是不釋放,該怎么解決?
1. 輸入數(shù)據(jù)庫(kù)目錄/usr/local/MySQL/data2。備份要保存的數(shù)據(jù)庫(kù)文件3。停止數(shù)據(jù)4。刪除目錄/usr/local/MySQL/data文件5中的ibdata1。重新啟動(dòng)數(shù)據(jù)庫(kù)并導(dǎo)入備份數(shù)據(jù)庫(kù)文件
1。Drop tableuuname立即釋放磁盤(pán)空間,無(wú)論是InnoDB還是MyISAM
2、truncate tableuuname立即釋放磁盤(pán)空間,無(wú)論是InnoDB還是MyISAM。實(shí)際上,truncate table有點(diǎn)類似于drop table然后create,但是創(chuàng)建表的過(guò)程已經(jīng)過(guò)優(yōu)化,例如表結(jié)構(gòu)文件已經(jīng)存在,等等。所以速度應(yīng)該接近drop table的速度
3uname將刪除表中的所有數(shù)據(jù)。MyISAM會(huì)立即釋放磁盤(pán)空間(做特殊處理是合理的),InnoDB不會(huì)釋放磁盤(pán)空間
4。Delete from table Name其中XXX條件刪除,無(wú)論是InnoDB還是MyISAM,都不會(huì)釋放磁盤(pán)空間
5。刪除操作后使用優(yōu)化表uName立即釋放磁盤(pán)空間。不管是InnoDB還是MyISAM。因此,為了釋放磁盤(pán)空間,應(yīng)該在刪除之后執(zhí)行優(yōu)化表操作。
6. 盡管在delete from表中沒(méi)有釋放磁盤(pán)空間,但在下次插入數(shù)據(jù)時(shí)仍然可以使用它。
mysql數(shù)據(jù)刪除如何快速釋放磁盤(pán)空間?
高水位線(HWM)是Oracle(段)級(jí)別的概念。當(dāng)只有DML(例如delete、insert)操作時(shí),高水位線只會(huì)增加,而不會(huì)減少。具體來(lái)說(shuō),由于程序使用的delete語(yǔ)句不會(huì)回收已用空間,因此盡管數(shù)據(jù)已被刪除,但高水位仍處于上一級(jí)別。解決方案:降低表的高水位語(yǔ)法:alter table my Objects收縮空間:使用truncate刪除數(shù)據(jù)不會(huì)導(dǎo)致HWM