WEB开发网
开发学院数据库MSSQL Server SQL Server 2008新特性之数据仓库可扩展性(2) 阅读

SQL Server 2008新特性之数据仓库可扩展性(2)

 2009-01-19 10:21:41 来源:WEB开发网   
核心提示: 这个计算的一个逐个单元评估过程如下图所示,图8: 逐个单元评估例子[2005, all products]的10个单元轮流评估,SQL Server 2008新特性之数据仓库可扩展性(2)(5),对于每一个,我们回到上一年,2005,5)},取得销售值,并将它添加到今年的销售里

这个计算的一个逐个单元评估过程如下图所示。

SQL Server 2008新特性之数据仓库可扩展性(2)

图8: 逐个单元评估例子

[2005, all products]的10个单元轮流评估。对于每一个,我们回到上一年,取得销售值,并将它添加到今年的销售里。这个方法有两个明显的性能问题。

首先,如果数据是稀疏的,那么即使是会返回一个null值的单元也会被计算。在这个例子里,计算除了Product3和Product6以外的任何一个单元都是种浪费。这个影响可能极大——在一个稀疏立方体种,被评估的单元数目可能会相差好几个数量级。

其次,即使数据总的来说是密集的——意味着每一个单元都有一个值并且没有浪费时间访问空单元,也还是有重复的工作。每一个产品都重复做了相同的工作(例如获得上一年成员、为上一年单元建立新的上下文、检查递归)。将这个工作从评估每一个单元的内部循环中删除将会使得更为高效。

现在假设使用一个子空间计算方法来执行相同的例子。首先,我们以自己的方式建立一个执行树,确定应该填写哪块空间。假设我们需要为下面的查询计算空间:

[Product.*, 2005, RollingSum]

假设有这个计算,这意味着我们必须先计算空间:

[Product.*, 2004, Sales]

接着这个空间:

[Product.*, 2005, Sales]

然后对这两个空间应用‘+’操作符。

销售是一个基本测量,所以我们简单获得存储引擎数据将这两个空间填写在叶子节点,然后生成这个树,应用这个操作符填写根节点的空间。因此获得了这个记录(Product3,2004,3)以及这两个记录{ (Product3,2005,20),(Product6,2005,5)},并对它们应用了+操作符来生成结果。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SQL Server 特性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接