2012-04-20 100 views
13

在我的网络应用程序中,我使用两个“清理”数据库中的一个表的循环事件,两者每15分钟左右执行一次。MySQL事件有多昂贵?

我的问题是,这会导致未来的性能问题吗?因为我读过某处 - 我不记得在哪里,MySQL events应该计划在一个月左右运行一次。事情是这样的,同样的事件使得表格尺寸减小了很多(因为它们删除了超过15分钟的记录),也许这会补偿它们执行的频率,对吧?

另外,如果有一个大的MySQL事件或许多小事件被调用的频率相同,它会更好吗?

回答

4

我不认为每月的基地的性能指标只是更多的建议如何处理它。所以我认为你可以使用事件进行清理。

到底documentation suggets该事件是

概念上,这是类似于Unix的crontab(也称为“cron作业”)或Windows任务计划的想法。

而这个概念就是你可以每分钟运行一个任务,如果你愿意的话。


关于这一问题的第二部分:

序列化或传播它。如果将它们拆分成许多可同时运行的事件,则会产生可能非常高的CPU使用率峰值,这可能会在处理事件时减慢应用程序的运行速度。

因此,无论是将所有事件打包到一个事件中,以便它们连续运行或向上传播单个事件,以便在15分钟的时间内在不同的时间执行。就我个人而言,我认为第一个是首选,将它们组装成一个单一的事件,因为他们保证连续运行,即使他们中的单个人比平时运行时间更长。

cronjobs也是如此。如果你在一次单独的时间里导出30次长时间运行的应用程序,那么你的应用程序在这个时间段内会惨遭失败(很难理解)。

+0

感谢您的回答人!非常详细。我想我会与你提到的第二个选项,有几个事件,但异步执行它们来分配CPU使用 – federicot 2012-04-20 09:52:01

+1

@JohnDoe btw,如果你正在寻找创建一个日志或什么你应该看看mongo-db为此,有一个称为加盖集合的特性将限制表的大小并自动清除它:http://www.mongodb.org/display/DOCS/Capped+Collections – bardiir 2012-04-20 09:55:38