我目前正在构建一个带有 highchart 和 highstock 的统计数据和图表的小型管理平台。现在,每次加载时,图表总是从数据库中获取数据。但是由于未来数据将大幅增长,因此效率非常低,并且会减慢数据库的速度。我现在的问题是存储或预先计算数据的最佳方法是什么,这样图表就不必在每次加载时都从数据库中获取它。
问问题
266 次
1 回答
2
如果数据量真的很大,并且您可以牺牲一些实时的呈现方式,那么最好的方法是在某个单独的数据库表中计算图表的数据并从中显示图表。您可以设置一个后台进程(使用无论何时或延迟作业或任何您喜欢的)以使用新值定期更新预处理数据表。
另一种选择是通过您喜欢的任何方式缓存图表响应(使用内置的 Rails 缓存、编写自定义缓存等),以将相同的数据提供给大量用户,同时减少 DB 命中。
然而,总的来说,预处理似乎是赢家,因为统计表通常包含非常“稀疏”的数据,这些数据可以预先计算为更小的数据集以显示在图表上,但如果需要,还可以选择应用一些过滤/排序。
编辑只是忘了提到在数据库方面可能有一些优化空间。例如,如果您可以限制用户能够查看数据的时间段(= 限制每次使用时要查询的数量),那么正确的索引和数据库设置可以在没有中间人的情况下提供显着的性能,例如缓存或预计算。
于 2012-11-09T15:44:41.440 回答