2010-08-18 46 views
3

我有一个包含大量数据的表。数据需要经常更新:删除旧数据并添加新数据。我有两个选择mysql删除效率

  1. ,无论是否存在缺失事件,我删除的条目立即
  2. 我打上删除的条目,并使用cron作业删除在unpeak时间。

这两个选项之间有什么效率差?或者更好的解决方案?

+0

有多大?数千行,数百万? – 2010-08-18 19:49:26

回答

1
  • 删除和更新都可以有触发器,这可能会影响性能(检查是否是你的情况)。
  • 更新一行通常比删除(由于索引等)更快

然而,在操作删除一行,对性能的影响应该不会那么大。如果您的测量结果显示数据库花费大量时间删除行,那么您的标记和扫描方法可能会有所帮助。这里的关键词大概是,测量值为 - 除非单次删除比更新速度慢得多,否则我不打扰。

0

对于MySQL,删除只是在内部标记为删除,并且当CPU(几乎)空闲时,MySQL会更新索引。

不过,如果这是一个问题,并且您要删除多行,请考虑使用DELETE QUICK。这告诉InnoDB不更新索引,只是将其标记为已删除,因此可以重用。

要恢复未使用的索引空间,每晚简单地进行OPTIMIZE TABLE。

在这种情况下,不需要在您的应用程序中实现MySQL将在内部执行的功能。