【发布时间】:2012-11-07 14:43:39
【问题描述】:
问题来了,我们有一个用户想要显示的数据。查询,我们优化和索引的速度与我认为的一样快。我们可能会减少一两秒钟,但由于数据量很大,我们无能为力。
无论如何,因此查询在仅限于一两天的数据时运行良好,但是用户运行它一两个星期的数据。所以查询两三周的数据大约需要 40 秒,Heroku 超时 30 秒,这是行不通的。所以我们需要一个解决方案。
所以在这里和谷歌搜索,我看到 webhooks 或 Ajax 可以作为解决方案的 cmets。但是,我一直无法找到一个真实的具体例子。我还看到一条评论,有人说我们可以发送某种“重置时钟”的回复。但再次听起来很有趣,但找不到一个例子。
我们有点不知所措,用户不满意,所以我们需要一个快速简单的解决方案。在此先感谢您的帮助!
【问题讨论】:
-
是否有无法对结果进行分页的原因?我最近一直在使用数据库,并且相当多的表有超过 300 万个包含复杂数据集和关联的结果。如果没有分页,那将是一场噩梦。如果您使用 mysql2 gem,您可能对“流”选项感兴趣:github.com/brianmario/mysql2#streaming。抱歉,我没有具体的例子。
-
顺便说一句,如果这是在图表上显示数据,我可能会使用 AJAX 回调并批量获取数据,然后我会缓存该数据。我们需要更多关于如何使用这些数据的信息。
-
流媒体真的很有趣。我想我可以在其他地方使用它。我们进行分页,问题在于实际查询执行时间约为 30-40 秒。超时时间为 30,在 Heroku 上无法调整。因此,执行查询所花费的时间比结果更重要。
-
分页是否在查询级别使用限制/偏移完成?您一次要获取多少条记录,以及该数据集的表中有多少条记录?这些数据是用于图表/绘图还是平均结果?
-
没有正在使用 Kaminari 完成分页。我做了一个快速测试,看看限制为 30 行是否会加快查询速度,它确实会加快查询速度,但只需大约一秒钟,我们需要保存大约 10 行以确保安全。
标签: ruby-on-rails ajax ruby-on-rails-3 webhooks