【问题标题】:Optimizing large select query to json in rails在rails中优化对json的大型选择查询
【发布时间】:2012-07-27 00:19:03
【问题描述】:

我需要从多个数据库表中获取大量数据,将数据格式化为嵌套的 JSON,然后将其输出到浏览器,并且速度非常快。我一直在分析不同的技术来优化流程。到目前为止,我尝试过的两种技术是:

1) 运行查询并将结果返回给rails。在rails中构造json并发送到浏览器。

2) 运行查询并使用字符串连接,在数据库中构建 json,将单个字符串返回到 rails。 Rails 将内容类型设置为 application/json 并将字符串发送到浏览器。

后一种技术比前者快得多。我可以推测这是因为将数据库对象转换为 ruby​​ 对象会产生开销,而且对象的绝对数量是压倒性的。

有更好的方法吗?

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-3 json postgresql


    【解决方案1】:

    是否可以选择将其分解为分页或类似内容?通常,提高性能的最简单方法是减少需要完成的工作量。

    【讨论】:

    • 我正在可视化数据,因此它比在表格中显示数据稍微复杂一些。都是测量数据,所以 GIS、温度等。我已经将数据请求拆分为一系列较小的请求,并有用于简化和压缩数据集的算法。
    • 是否可以在您的数据库中保留摘要数据。根据需要使用 after_save 回调或其他东西来更新它。也许创建一个存储摘要信息的表,保存每条记录时这将是一个无关紧要的开销,但在报告它时却是一个巨大的救星。否则也许你可以使用缓存?
    • 是的,我同意。我实现了一层缓存来保存 json 数据,这样数据库就不会被同一个查询命中。我的问题更多是关于将数据从数据库获取到浏览器的微优化。
    • 我知道我在绕开这个问题,但我没有解决方案,听起来你已经优化得很好。听起来好像从其他地方看大局可能是您获得最大收益的地方。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多