Mysql單文件存儲刪除數(shù)據(jù)文件容量不會減少的bug與解決方法
MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed
問題描述
當innodb引擎使用單個文件進行存儲的時候,當對數(shù)據(jù)庫中數(shù)據(jù)進行刪除的時候,文件的大小并不會發(fā)生變化,意味著文件將會越來越大并且即使刪除也沒辦法 讓其釋放磁盤的空間。
驗證過程
創(chuàng)建一個測試使用的表,如下創(chuàng)建好t這樣的一個表。

創(chuàng)建簡單的存儲過程來批量的插入數(shù)據(jù)。

查看開始前的文件的大小

當批量插入接近十萬的數(shù)據(jù)后

然后進行刪除操作

占用磁盤空間并未減少
解決方案
兩種方式:
1. 先備份后刪除然后進行導(dǎo)入
mysqldump -uxxx -pxxx --all-databases > db.sql service mysql stop rm ibdata rm ×log文件 service mysql start mysql -uxxx -pxxx < db.sql
2. 把表設(shè)置為單表存儲的形式,這樣每個表中的數(shù)據(jù)單獨存儲,在刪除數(shù)據(jù)的時候,會隨著數(shù)據(jù)的刪除而釋放存儲空間。
set global innodb_file_per_table = on
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- MySQL刪除數(shù)據(jù)庫的方法舉例
- MySql中刪除數(shù)據(jù)表的方法詳解
- mysql如何刪除數(shù)據(jù)表和關(guān)聯(lián)的數(shù)據(jù)表刪除詳情
- Mysql如何刪除數(shù)據(jù)庫表中的某一列
- 淺談為什么MySQL不建議delete刪除數(shù)據(jù)
- Mysql刪除數(shù)據(jù)以及數(shù)據(jù)表的方法實例
- MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因
- MySQL實現(xiàn)快速刪除所有表而不刪除數(shù)據(jù)庫的方法
- MySQL刪除數(shù)據(jù)庫的兩種方法
- mysql中刪除數(shù)據(jù)的四種方法小結(jié)
相關(guān)文章
Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程
mysql數(shù)據(jù)庫的重新安裝是一個麻煩的問題,很難卸除干凈,下面這篇文章主要給大家介紹了關(guān)于在Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07

