这在很大程度上取决于脚本的性能特征。如果 CPU 密集度很高但影响很小,那么我不会担心:当使用 heroku 调度程序之类的东西时,作业在单独的测功机中运行。由于它是一个单独的测功机,它不会影响您正在服务请求的其他测功机。
大量的数据库使用是另一回事。您的数据库具有有限数量的 IO、缓存、CPU 等,如果您正在努力推动它(大量写入通常比大量读取更糟糕,因为这些缓存缓存),那么您可能会降低其他测功机的性能。
也可以完全停止网站工作 - 如果您的工作最终锁定了应用程序的其余部分试图访问的行/表,那么您的网络测功机将被阻止,直到您的工作释放这些锁定。
如果您在遍历提要时逐一解析提要和更新的数据库行,那么您可能会没事:就锁定争用而言,大量的小写入/读取比大量写入/读取要好,我认为您不会' 将很难击中数据库,因为听起来您主要是从索引列一次加载一行,进行一些 ruby 计算,然后更新单行。
如果您确实发现性能下降到无法接受的程度,并且如果读取了瓶颈,那么一种出路是拥有一个读取从属设备(也称为副本,或者在 heroku 中说一个追随者)。简而言之,这是一个单独的、只读的数据库服务器,用于跟踪主数据库服务器(因此它始终是最新的)。您对此服务器所做的任何事情都不会影响您的主数据库,因此您可以放心查询。
如果问题是您需要执行的写入次数,这对您没有帮助。在某种程度上,这可以通过切换到更强大的数据库服务器来解决(有代价)。对于某些使用模式,不同类型的数据存储(例如 mongo、redis)有时比关系数据库更合适。有时可以设计出一些性能热点,但显然你是考虑这一点的最佳人选。
这一切都非常抽象——你真正知道的唯一方法就是尝试。设置您的应用程序的副本,启动此任务并查看性能如何下降(如果您不担心一次性影响,或者对真实应用程序执行此操作)