是不是可以使用cron?

时间:2011-08-26 01:43:00

标签: mysql cron

我运行游戏统计网站。与人们在这里工作的大多数事情相比,它的MySQL数据库是小土豆,但共享托管确实需要关注查询优化,特别是在执行大量连接和子查询时。

本周早些时候,我移动了一个相当缓慢(约0.5秒)的查询,该查询将成员的评级分组,计算,平均和排序为夜间cron作业。结果存储在表格中。

因为我们每天平均大约一个新的评级,所以更改不会导致我的用户出现任何可察觉的数据不准确,并且刚刚从表中抓取行的新查询在~0.000X范围内运行,因此所有页面都拉动数据明显加快。

显然这是件好事!

当我坐在那里沉浸在我的cron工作的光芒中时,我的思绪开始贯穿于网站的其他方面,并精神上标记那些可能是cron'd ...(很多)

这让我想知道 - 是否有可能过多地使用cron?

因为我的网站的数据库每天都会发生一次变化,所以我可以想象通过夜间cron作业运行所有复杂查询(有许多)并将结果存储在表格中。

有没有缺点? (除了偶尔没有准确的数据?)

4 个答案:

答案 0 :(得分:1)

您没有开始接近cron可以(或应该)安排的工作量的限制。你会没事的。 :)

您可能希望考虑像gearman这样的工作人员消息队列来触发应该在事后“运行”的作业,但不一定按固定的时间表运行。

答案 1 :(得分:1)

Cron很棒;避免重新发明轮子通常是一件好事。有些应用程序比cron可以容纳更精确的需求,因此这是不使用它的一个原因。此外,分发和管理构成应用程序不可或缺的一部分的cronjobs可能很困难且容易出错,尤其是操作系统中没有合格的包管理器。故障排除可能有点痛苦,特别是当有一个服务器缺少其100个cronjobs之一或其他服务器时,但可以通过操作系统包管理器或类似木偶来管理。

但我的意见是尽可能使用cron并且有意义,而不是自己动手。

答案 2 :(得分:0)

运行所有程序的一个cron作业怎么样?

我曾经在一个unix系统上工作过,在cron作业队列超过20个条目之后失败了。队列没有在任何可预测的周期上执行 - 即FILO,FIFO LIFO等,它只是随机化

答案 3 :(得分:0)

您可以考虑使用触发器来使您的摘要统计信息保持最新。如果您喜欢定期运行查询,那么MySQL 5.1+中还有一个事件调度程序。

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

http://dev.mysql.com/doc/refman/5.1/en/events.html