我有一个包含大ibdata1文件的数据库,现在我的系统似乎更慢了。大的ibdata1文件会影响我的数据库性能吗?
答案 0 :(得分:1)
单独使用大型ibdata1对性能没有任何影响。
ibdata1文件的增长可能是由许多未经插入的行版本和未合并的更改缓冲区条目引起的。这些未完成的更改对性能的影响是查询可能需要以即时方式合并文件的多个部分中的数据条目。
渐渐地,InnoDB将在后台清理它,但这可能需要几分钟或几小时,具体取决于数据库活动创建了更改后退日志的数量。
如果您不想等待,可以转储和恢复数据,这将重建包含索引的表空间。
答案 1 :(得分:0)
首先检查innodb_file_per_table变量,它似乎在您的服务器中关闭。由于这个,所有数据都存储在单个文件.ibdata1中,如果你设置这个变量,那么每个表数据都将存储它自己的.ibd文件。
如果表中经常更新和删除,那么您的索引将被分段并且索引将无法正常使用(某些时间索引文件大小将增加,甚至索引可能比表扫描花费更多时间)。即使删除这么多行,也不会释放数据库大小。
在这种情况下,您需要重建索引,还需要获得释放空间,因此您需要重建数据库。您可以通过优化表或更改任何字段或转储/恢复来实现它。
如果您的数据将存储在.ibdata1这样的单个文件中,那么即使您有1个表的索引/空间问题,但您必须重建整个数据库。但是如果你使用innodb_file_per_table,那么你需要重建单个表,哪里有问题。
希望这可以帮助您分析问题。