2009-08-17 62 views
4

我想知道是否有任何性能影响将大量计算成员添加到我的多维数据集中。一方面,事情定义一次,集中定位,测试并可用于任何不支持MDX的客户端是很好的。另一方面,我添加的这些成员中的一些可能不会经常使用,所以我可以将它们内联到一两个可能需要它们的报告中。计算成员在SSAS中的性能影响

从具有不必要的成员四处张望,我应该保持计算的成员数量尽可能小的杂乱

除了?会不会增加立方体处理时间?他们会减慢不使用这些计算成员的查询吗?

回答

10

计算成员很少有对处理也没有对其他查询没有影响。尽可能多地添加你想要的!

原因是他们只是在立方体上定义,但实际上在运行时评估。因此,只有那些会被它们放慢或影响的查询才是使用它们的查询。由于这个原因,期望它们比本地成员慢一点。

寻找一切机会,使计算成员多维数据集的实际组成部分,如果它的使用非常频繁。另外,了解并喜爱scope声明。虽然计算的成员scope d仍然在运行时计算,但scope语句为其提供了一个现成的执行计划,因此它往往会更快。我会经常在DSV中创建一个成员,然后为我的大批量计算成员创建一个成员。

+0

并非所有成员都是预先计算的立方体的整个点?为什么SSAS会提供预先计算自定义成员的有限手段?叹... – Jake 2010-08-03 23:08:03

+2

@Jake:不是*全部*成员。如果是简单的计算,多维数据集中度量值的组合不值得存储 - 例如,如果您将“零售”和“Internet销售”作为多维数据集中的度量值,并且您希望“总销售额”,则不会为了保持“总销售额”衡量标准,要将事实大小增加33% - 只需定义“总销售额=零售销售额+互联网销售额”的计算方法效率更高...... – 2011-03-16 10:33:41

0

任何时候,你可以把计算回关系模型,它将增加MDX查询性能;但也会对加工性能产生负面影响。

如果可以预先计算使用行SQL逻辑了一些措施,那么这些暴露在你的数据源视图的措施。存储引擎可以构建聚合,公式引擎可以做的工作量更少。你基本上是把重要的东西推到sql。这个作品真的很好静态计算和换算系数之类的东西简单的算术等

你能做的就是创造不应该由作为隐藏的最终用户可以使用任何中间计算成员另一件事,这不会有任何影响绩效;但会从最终用户的角度来解决这个问题。