【问题标题】:Proper to use stored procedure to dynamically create charts?正确使用存储过程来动态创建图表?
【发布时间】:2014-09-17 22:57:53
【问题描述】:

我在 Rails 中工作,想将动态图表添加到我的应用程序中。我的想法是,鉴于数据在平面文件中,可以在 MySQL 数据库中创建一个存储过程,以根据用户希望查看的参数查询数据,即。按一年中的月份(x 轴)对用户和按活动分组(y 轴)求和。然后将从 rails 调用存储过程并返回结果以构建到图表中。

但是,已经注意到存储过程很慢,因此如果加载时间很长来简单地呈现图表,可能会影响用户体验。

对于我正在尝试做的事情,这是继续前进的最佳方式吗?

【问题讨论】:

    标签: mysql ruby-on-rails performance stored-procedures


    【解决方案1】:

    存储过程很慢

    需要注意的是,存储过程方法不会花时间从 SQL 服务器到 rails 来回遍历数据,反之亦然,因此实际存储过程的执行速度应该比传统的一堆 ActiveRecord 快得多查询。

    如果加载时间过长,可能会影响用户体验

    根据可能的加载时间和用户查询,有多种方法可以改善用户体验:

    1. 您可以使用诸如“正在生成数据,请稍等片刻”之类的占位符文本来呈现页面,并使用 AJAX 或服务器端事件等技术稍后显示分析查询的结果。可以使用Delayed JobSidekiq 在后台处理报告生成。也可以显示进度条之类的东西,让用户知道他的请求没有被放弃。

    2. 您可以利用缓存数据进行常见查询,这样每个查询只执行一次。可以根据图表的相关程度选择不同的缓存时段(例如,每小时或每天更新一次缓存的统计信息)。看看rails caching手册页。

    3. 您还可以参与一些数据挖掘研究,例如多维online analytical processing方法。使用 OLAP 多维数据集表示数据的方式会稍微难以理解,但可以通过多维数据分析的可能性改善您的用户体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多