亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從表中刪除數據行后,MySQL InnoDB無法釋放磁盤空間

從表中刪除數據行后,MySQL InnoDB無法釋放磁盤空間

www說 2019-11-07 12:44:22
我有一個使用InnoDB存儲引擎的MySQL表;它包含大約2M數據行。當我從表中刪除數據行時,它沒有釋放分配的磁盤空間。運行該optimize table命令后,ibdata1文件的大小也沒有減小。有什么辦法可以從MySQL回收磁盤空間?我處境很糟;該應用程序在大約50個不同的位置運行,現在幾乎所有位置都出現磁盤空間不足的問題。
查看完整描述

3 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

MySQL不會減小ibdata1的大小。曾經 即使您optimize table用來從已刪除的記錄中釋放已使用的空間,它也會在以后重用。


一種替代方法是配置服務器以使用innodb_file_per_table,但這將需要備份,刪除數據庫并還原。積極的一面是該表的.ibd文件在optimize table。之后被減少。


查看完整回答
反對 回復 2019-11-07
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我自己也遇到了同樣的問題。


什么情況是,即使你刪除數據庫,InnoDB的仍不會釋放磁盤空間。我必須導出,停止mysql,手動刪除文件,啟動mysql,創建數據庫和用戶,然后導入。謝天謝地,我只有200MB的行,但它保留了250GB的innodb文件。


設計失敗。


查看完整回答
反對 回復 2019-11-07
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

如果您不使用innodb_file_per_table,則可以回收磁盤空間,但是非常繁瑣,并且需要大量的停機時間。


“操作方法”非常深入-但我在下面粘貼了相關部分。


確保在轉儲中還保留架構的副本。


當前,您不能從系統表空間中刪除數據文件。要減小系統表空間大小,請使用以下過程:


使用mysqldump轉儲所有InnoDB表。


停止服務器。


除去所有現有的表空間文件,包括ibdata和ib_log文件。如果要保留信息的備份副本,則在刪除MySQL安裝中的文件之前,將所有ib *文件復制到另一個位置。


刪除InnoDB表的所有.frm文件。


配置一個新的表空間。


重新啟動服務器。


導入轉儲文件。


查看完整回答
反對 回復 2019-11-07
  • 3 回答
  • 0 關注
  • 960 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號