2014-05-02 97 views

回答

0

首先检查innodb_file_per_table变量,它似乎已关闭在您的服务器中。由于所有的数据都存储在单个文件.ibdata1中,所以如果你设置了这个变量,那么每个表中的数据将被存储它自己的.ibd文件。

如果您的表格中频繁更新和删除,那么您的索引将被分段并且索引将无法正确使用(某些时候索引文件的大​​小会增加,甚至索引可能比表扫描需要更多的时间)。即使删除了很多行,db的大小也不会被释放。

在这种情况下,你需要重建索引,也需要获得释放的空间,因此你需要重建你的数据库。您可以通过优化表或改变任何字段或转储/恢复来实现它。

如果您的数据将存储在单个文件中,比如.ibdata1,那么即使您有1个表的索引/空间问题,但您必须重新构建整个数据库。但是,如果你使用innodb_file_per_table,那么你需要重建单个表的问题。

希望这可以帮助你分析你的问题。

1

大型ibdata1本身对性能没有任何影响。

ibdata1文件的增长可能由很多未清理的行版本和未合并的更改缓冲区条目引起。这些未完成更改对性能的影响是,查询可能需要以即时方式合并文件多个部分的数据条目。我们将逐步在后台清理它,但这可能需要几分钟或几小时,这取决于数据库活动创建了更改的反向日志。

如果你不想等待,你可以转储和恢复你的数据,这将重建包括索引在内的表空间。

+0

hi @ bill-karwin,那么它只是空间问题? – tesmojones

相关问题