2012-01-23 80 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文件将永远不会萎缩