【问题标题】:Developing an optimal solution/design that sums many database rows for a reporting engine开发一个最佳解决方案/设计,为报告引擎汇总许多数据库行
【发布时间】:2017-09-20 04:07:13
【问题描述】:

问题:我正在开发一个报告引擎,该引擎显示有关农场检测到的蜜蜂数量的数据(这里的蜜蜂只是一个示例)

我有 100 台设备,每分钟计算在农场检测到多少蜜蜂。下面是 DB 的样子:

因此,在给定的一周内可能会有数十万行。

农民想要一份报告,显示某一天每小时有多少蜜蜂。我开发了两种方法来做到这一点:

  1. 服务器从数据库中获取当天的所有 100,000 行数据并将其过滤掉。服务器使用大量内存来做这件事,我觉得这是一个蛮力解决方案

  2. 我有一个存储过程,它返回一个临时创建的表,每小时收集每个设备的蜜蜂总数。服务器获取这张表,不需要处理 100,000 行。

这将返回 (24 * 100) 行。但是,这比我预期的要花更长的时间~

有哪些很好的候选解决方案可以开发一种可以整合和汇总这些数据的解决方案,而无需花费 30 秒来汇总一天的数据(我可能需要在几天之间划分一个月的价值)?

【问题讨论】:

    标签: database algorithm architecture


    【解决方案1】:

    如果性能是您最关心的问题,那么您可能可以直接在数据库上做很多事情。我会尝试在time_collected_bees 上索引表,以便它可以更快地过滤到 100K 行。如果数据库正在扫描整个表以查找相关条目,我猜这就是您的减速发生的地方。

    如果您使用的是 SQL Server,则可以尝试查看您的 execution plan 以了解实际减慢速度的原因。

    在构建真正复杂且难以维护的东西之前,请多了解一下数据库优化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多