在 rails 中的仪表板视图上处理繁重 SQL 查询的最佳方式



我有这个仪表板(报告(,它基本上执行繁重的SQL查询并将其结果显示在表格网格上,这是非常标准的东西。

但是,有时,由于大量数据和 sql 复杂性,查询会很繁重,并且浏览器只是挂起,直到用户收到错误。

我没有 n+1 个查询,并尝试添加分页,但我仍然面临这个问题。

对此最好的方法是什么? 使用后台作业?

有没有办法在后台执行此查询,以防止请求失败?

我尝试实现 sidekiq 工作线程,但我不确定在工作完成后是否可以从工作线程那里返回结果。

@results = ActiveRecord::Base
.connection
.select_all(query)
.map do |record|
Hashie::Mash.new(record)
end

query包含对字符串的 SQL 查询。

有什么见解吗?

工作线程是异步的。我不知道你是否需要在这里这样做,但正因为如此。worker和你的mains进程(服务器(不在同一线程上,所以它们无法真正通信

但是你可以找到一种方法在同一个worker中处理它,甚至将结果写在一个可以查找的文件中,或者在主线程上的同一服务器上发送一个请求(但由于数据繁重,它可能会变慢(等等。

也许像redis这样的缓存服务器可以帮助临时存储它并向主线程发送请求,告诉他 Redis 服务器上有一些东西可以查看

相关内容

  • 没有找到相关文章

最新更新