Mysql單文件存儲刪除數(shù)據(jù)文件容量不會減少的bug與解決方法
MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed
問題描述
當(dāng)innodb引擎使用單個(gè)文件進(jìn)行存儲的時(shí)候,當(dāng)對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行刪除的時(shí)候,文件的大小并不會發(fā)生變化,意味著文件將會越來越大并且即使刪除也沒辦法 讓其釋放磁盤的空間。
驗(yàn)證過程
創(chuàng)建一個(gè)測試使用的表,如下創(chuàng)建好t這樣的一個(gè)表。
創(chuàng)建簡單的存儲過程來批量的插入數(shù)據(jù)。
查看開始前的文件的大小
當(dāng)批量插入接近十萬的數(shù)據(jù)后
然后進(jìn)行刪除操作
占用磁盤空間并未減少
解決方案
兩種方式:
1. 先備份后刪除然后進(jìn)行導(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è)置為單表存儲的形式,這樣每個(gè)表中的數(shù)據(jù)單獨(dú)存儲,在刪除數(shù)據(jù)的時(shí)候,會隨著數(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ù)表的方法實(shí)例
- MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因
- MySQL實(shí)現(xiàn)快速刪除所有表而不刪除數(shù)據(jù)庫的方法
- MySQL刪除數(shù)據(jù)庫的兩種方法
- mysql中刪除數(shù)據(jù)的四種方法小結(jié)
相關(guān)文章
openEuler?RPM方式安裝MySQL8的實(shí)現(xiàn)
本文主要介紹了openEuler?RPM方式安裝MySQL8的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Linux下MySQL5.7.18 yum方式從卸載到安裝過程圖解
這篇文章主要介紹了Linux下MySQL5.7.18 yum方式從卸載到安裝過程圖解,需要的朋友可以參考下2017-06-06MySql 存儲引擎和索引相關(guān)知識總結(jié)
這篇文章主要介紹了MySql 存儲引擎和索引相關(guān)知識總結(jié),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫的方法
這篇文章主要介紹了Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫的方法,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12MYSQL優(yōu)化之?dāng)?shù)據(jù)表碎片整理詳解
在日常的數(shù)據(jù)庫維護(hù)中,在給客戶制定維護(hù)方案時(shí),都會有降低高水位此類的建議 建議每年年終定期做數(shù)據(jù)整理,下面這篇文章主要給大家介紹了關(guān)于MYSQL優(yōu)化之?dāng)?shù)據(jù)表碎片整理的相關(guān)資料,需要的朋友可以參考下2022-04-04