sql服务器-有效地将数据保存到sql表中



每15分钟,我们读取并解析一个XML文件,该文件包括一个元素的kpi分数。该元素有5个子元素,每个子元素都有400 kpi得分。大约有250个元素(250个文件),这意味着每15分钟我将存储500K kpi分数(25个元素*5个子元素*400 kpi分数=500K kpi)

这些数据将用于报告,主要是每小时和每天汇总所有这些数据。换句话说,大多数KPI最终将被分组。但第一步是以某种方式存储各个计数器。

第一个也是最常见的想法是创建一个以列为KPI的表。但这是用类似的数据完成的,至少可以说,性能低于标准。

所以我的问题是,存储这些原始数据的最佳方式是什么?

我正在考虑创建一个小表,其中包括以下列:[Date]、[Hour]、[Minute]、[KPI]、[Score]。这里的问题(我认为)将是查询数据的困难;使用"常规"表,我可以简单地从table GROUP BY中选择KPI1、KPI2和KPI29。使用这种新格式,仅用一个查询对多个KPIS进行分组会稍微困难一些。

谢谢。

如果您需要原始数据,那么最好的方法是将其存储在表中的列类型XML上(加上日期/时间,可能还有其他数据来识别负载)

@Jayvee完全正确(+1)。我想补充一点:查询原始数据通常很慢。尽快存储聚合,并查询聚合而不是原始数据。原始数据通常只应用于历史和诊断目的。

我所说的"尽快存储聚合"的意思是:你可以在导入时计算它们(可能会减慢导入速度),或者(更好)你可以(也)将它们插入(第二个)"缓冲区"表中,然后运行一个单独的作业来聚合缓冲的记录,然后清除缓冲区。这样,您就不必查询庞大的历史表来聚合新数据。

最新更新