我运行游戏统计网站。与人们在这里工作的大多数事情相比,它的MySQL数据库是小土豆,但共享托管确实需要关注查询优化,特别是在执行大量连接和子查询时。
本周早些时候,我移动了一个相当缓慢(约0.5秒)的查询,该查询将成员的评级分组,计算,平均和排序为夜间cron作业。结果存储在表格中。
因为我们每天平均大约一个新的评级,所以更改不会导致我的用户出现任何可察觉的数据不准确,并且刚刚从表中抓取行的新查询在~0.000X范围内运行,因此所有页面都拉动数据明显加快。
显然这是件好事!
当我坐在那里沉浸在我的cron工作的光芒中时,我的思绪开始贯穿于网站的其他方面,并精神上标记那些可能是cron'd ...(很多)
这让我想知道 - 是否有可能过多地使用cron?
因为我的网站的数据库每天都会发生一次变化,所以我可以想象通过夜间cron作业运行所有复杂查询(有许多)并将结果存储在表格中。
有没有缺点? (除了偶尔没有准确的数据?)
答案 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+中还有一个事件调度程序。