适当使用存储过程动态创建图表?

时间:2014-09-17 22:57:53

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

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

但是,已经注意到存储过程很慢,因此如果加载时间很长,只需渲染图表就可能会破坏用户体验。

我想要做的是这是继续前进的最佳方式吗?

1 个答案:

答案 0 :(得分:0)

  

存储过程很慢

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

  如果加载时间很长,

可能会破坏用户体验

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

  1. 您可以使用一些占位文本来渲染页面,例如“生成数据,暂停一段时间”,并使用AJAX或服务器端事件等技术稍后显示分析查询的结果。可以使用Delayed JobSidekiq在后台处理报告生成。也可以显示类似进度条的内容,让用户知道他的请求没有被放弃。

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

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