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