大型表的性能调整(SQL Server 2008 R2)


14

背景:
我在UAT阶段有一个事实表。目标是在Prod中加载5年的数据(预期大小为400 Mn记录)。目前,它只有2年的测试数据。

表功能:

  1. 尺寸数〜45
  2. 措施〜30
  3. 非累加措施和其他专栏〜25
  4. 当前数据大小〜2亿(2年数据)
  5. 时间视图:3种不同的月视图:财政/日历/调整后的(即同一行可以在不同的月份中落入,具体取决于所寻找的视图)
  6. 用户一次只需要一个视图。(即,查询中仅使用一个月列,这使我们无法按时间视图进行分区)
  7. 索引:1个自然键聚集索引(8列)。在每个月列上创建3个覆盖非聚集索引的索引,其中包括很少的维度SK(FK)和所有度量。
  8. 因此,索引很大(总计190 GB)。
  9. 空间不受限制(已分配1 TB)
  10. 服务器中有64 GB的RAM。
  11. 表压缩也完成了。

要求:
此事实表上的查询应在30秒内给出结果(一般查询选择sum(量度),并按Dim值将少量Dims组组合在一起)。报告直接在此事实表的顶部完成。

问题:
任何包含“索引”中可用列的查询都可以正常工作,但是如果我们包含其他不在“ include ..”中的列,则很糟糕。这需要5-10分钟以上。任何人都可以提出一些解决方案,使其适合我们选择的任何尺寸/列的情况。在这种情况下,索引视图可以提供帮助吗?

Answers:


6

升级到SQL Server 2012并使用列存储。他们在这些要求中蓬勃发展。认真下载评估版并尝试一下。删除所有索引,删除聚集索引,只需在所有列上添加非聚集列存储索引,然后对其进行旋转即可。我已经看到像您这样的情况将执行时间减少到2-3秒,这主要是因为消除段消除。一些补充说明:


0

索引视图是否可以解决您的问题?数据需要如何更新?您可以为一些排列创建索引视图。但是,如果有那么多的尺寸和度量,您可能会很快用完空间!

如何使用SSD?


数据将每月更新。更新视图需要多少时间?

如果您现有的查询需要5-10分钟,则索引视图将需要5-10分钟。完成后,当您运行相同的查询时,它将返回,就像它从表中出来一样(即立即)。索引视图会先运行特定的SQL。如果您提交与其匹配的SQL,它将从索引视图中获取它,而不是重新运行它。索引视图的主要优点是您不需要更改现有查询,它们会自动使用它。缺点是您几乎必须为几种不同的组合创建一个。
Nick.McDermaid 2012年

但是我不建议您创建多个索引视图来加快处理速度-最终会耗尽时间和磁盘空间。放入武器库可能只是一回事。
Nick.McDermaid 2012年

并请...按照建议调查专卖店!
Nick.McDermaid 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.