SQL Server 2008新特性之数据仓库可扩展性(2)
2009-01-19 10:21:41 来源:WEB开发网核心提示: 这个计算的一个逐个单元评估过程如下图所示,图8: 逐个单元评估例子[2005, all products]的10个单元轮流评估,SQL Server 2008新特性之数据仓库可扩展性(2)(5),对于每一个,我们回到上一年,2005,5)},取得销售值,并将它添加到今年的销售里
这个计算的一个逐个单元评估过程如下图所示。
图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)},并对它们应用了+操作符来生成结果。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接