寻求 Opinion:Denormalising 事实表和 Dim 表以提高 SSRS 报告的性能

Seeking Opinion:Denormalising Fact and Dim tables to improve performance of SSRS Reports

我们团队似乎对某个讨论点有一些争论。 我们正在 Microsoft SQL Server 2012 平台上开发数据仓库。我们已经按照 Kimball 架构构建了这个数据仓库。

问题:

从该仓库获取数据的报告解决方案(基于 SSRS)在从事实表和暗表获取数据时存在严重的性能问题。我们的一些团队成员建议我们使用 SSIS 包从 facts 和 dims 中提取数据到一组新的表中。这意味着我们将这些表非规范化为“快照”表。这样我们就不需要连接这些表来在报告中创建数据集。可以直接从这些表中读取数据。

我对此有自己的担忧;不一致、不同数据结构的维护、数据重复等等等。

问题:

您是否会考虑为报告表创建快照表(通过非规范化事实和模糊表)是一种正确的方法?

想听听您对此的看法。

干杯 尼辛

对于原始多维数据集性能,我的建议是始终尝试对您的 table 进行非规范化,并为每个维度(星型模式)设置一个事实 table 和一个 table。 如果您不确定它是否真的有帮助,您可以开始创建物化视图。这些是两全其美的方法,从长远来看 运行 你应该改变你的 etl。 在我之前的工作中,我们只将 tables 压平,效果很好。目前我们有一个规范化的架构,但在最后一步将其展平。

我认为快照 tables 没有任何问题。数据仓库的两个最重要的方面是:

  1. 数据正确。
  2. 数据很有用。

如果您的用户无法在合理的时间范围内提取他们需要的总计,他们将不会使用仓库。

我自己的解决方案包括 3 个快照 table。像你一样,我担心不一致。为了解决这个问题,我们建立了一个自动检查流程。该子系统每小时执行一次存储在网络驱动器上的一系列查询。查询返回的任何记录都被视为失败。我的 ETL 团队会报告失败并立即进行调查。该子系统确保快照和基础事实始终相互对齐和一致。防止漂移。

也就是说,额外的 tables 等于额外的复杂性。这需要更多 time/effort 来管理。在向您的数据仓库引入另一层之前,您应该调查这些查询性能不佳的原因。如果连接是罪魁祸首:

  1. 您是否为 P/F 键使用了不合适的数据类型?
  2. FKey 是否已编入索引(一些 RDBMS 默认这样做,而另一些则不这样做)?
  3. 您是否查看过执行计划中的违规查询?
  4. 连接真的是罪魁祸首,还是应用于暗淡的过滤器table?