在后台线程上放置昂贵的查询会有助于网站性能吗?

时间:2013-03-12 22:40:17

标签: ruby-on-rails postgresql heroku memcached

我们是在Heroku上运行的Ruby on rails应用程序,我们正在为我们的数据库使用Heroku的Postgres解决方案。

我们有一个非常昂贵的数据库查询。大约需要45秒。我们使用memcache来缓存此查询...但是第一次有人在缓存中24小时后进入运行此查询的页面时,该站点在运行此查询时基本上会停止运行。

我们正在考虑将查询放在后台线程上。这会与memcache很好地工作,这会有助于网站性能吗? DB仍在处理大型查询的事实会影响其他页面的加载吗?

1 个答案:

答案 0 :(得分:1)

如果问题在dyno上没有资源密集或锁定数据库,这可能会有所帮助。

如果两种情况都不成立,您只需向启动客户端返回一些内容(先前版本,可能在缓存过期之前启动该过程)并旋转新线程。

如果强度是在dyno而不是数据库上,您可以尝试旋转工作人员dyno或scheduled job

如果您的数据库已被锁定,那么您将返回绘图板。

哦,如果您的应用程序只使用一个数据库连接,请确保为该线程打开另一个(dyno将自行处理)。