2012-01-23 74 views
1

如果我將一個innodb表放回磁盤空間何時回收? 立即發生?何時在刪除mySQL表後磁盤空間再次可用?

如何用記錄而不是整個表格?

+1

簡短回答:從不 –

+0

@Eugen Rieck:即使桌子被丟棄?爲什麼?? – user881480

+0

INNODB具有用於存儲數據庫的表空間 - (大)文件。你可以定義它們(包括一個可能的定義,如果需要的話可以增長),但它們永遠不會收縮。任何可用空間保留供將來使用。 –

回答

3

這取決於您是否啓用了innodb_file_per_table服務器設置。

如果啓用了innodb_file_per_table,則每個表將其數據存儲在單獨的.ibd文件中。否則,所有表的數據都存儲在共享的.ibd文件中。

隨着innodb_file_per_table

  • 當你放下的.ibd文件被刪除的表和磁盤空間被立即釋放。
  • 當您刪除記錄時,它會釋放.ibd文件中的空間,但不會縮小它。重建表(例如通過運行OPTIMIZE TABLE)將釋放磁盤空間。

沒有innodb_file_per_table

  • 刪除表或刪除行從表中釋放了共享的.ibd文件的空間,用於存儲將來的數據,而是共享的.ibd文件將永遠不會萎縮