我有一個使用InnoDB儲存引擎的MySQL表;它包含大約2M資料行。當我從表中刪除資料行時,它沒有釋放分配的磁碟空間。執行optimize table指令後,ibdata1檔案的大小也沒有減少。
optimize table
有什麼辦法可以從 MySQL 回收磁碟空間嗎?
我的處境很糟糕;該應用程式在大約 50 個不同的位置運行,現在幾乎所有位置都出現磁碟空間不足的問題。
我自己也遇到了同樣的問題。
發生的情況是,即使刪除資料庫,innodb 仍然不會釋放磁碟空間。我必須匯出,停止mysql,手動刪除文件,啟動mysql,建立資料庫和用戶,然後匯入。感謝上帝,我只有 200MB 的行,但它節省了 250GB 的 innodb 檔案。
設計失敗。
MySQL 不會減少 ibdata1 的大小。曾經。即使您使用優化表來釋放已刪除記錄所使用的空間,它稍後也會重複使用它。
優化表
另一種方法是將伺服器配置為使用 innodb_file_per_table,但這需要備份、刪除資料庫和復原。積極的一面是,在 優化表格。
innodb_file_per_table
優化表格
我自己也遇到了同樣的問題。
發生的情況是,即使刪除資料庫,innodb 仍然不會釋放磁碟空間。我必須匯出,停止mysql,手動刪除文件,啟動mysql,建立資料庫和用戶,然後匯入。感謝上帝,我只有 200MB 的行,但它節省了 250GB 的 innodb 檔案。
設計失敗。
MySQL 不會減少 ibdata1 的大小。曾經。即使您使用
優化表
來釋放已刪除記錄所使用的空間,它稍後也會重複使用它。另一種方法是將伺服器配置為使用
innodb_file_per_table
,但這需要備份、刪除資料庫和復原。積極的一面是,在優化表格
。