SQL Server Analysis Service 2005性能优化检查点
2008-02-19 09:53:01 来源:WEB开发网对于每一个维度,都会有键属性。如果你需要在一个整数类型字段和一个字符串类型字段中选择一个作为主键的话,你应该选择整数型的字段。将整数型字段指定为键属性不但可以提高查询性能,还能够节约空间开销。如果你的键属性是一个整数型,你可以使用该字段将实际表和维度表链接起来,这又可以帮助性能的提高。
另外,键属性应尽量避免使用组合键。如果键属性不得不包含多个字段,则可以设置一个相应的代理,将这个代理设置为键属性。
数据类型和长度
无论是立方体还是数据库,我们都需要为属性设置适合的长度。为属性指定数据长度是非常普遍的,例如客户地址和姓名。最好的方法是把一个属性分解成几个属性,这样你就可以预知每个字段的长度。以地址字段为例,我们不知道地址的长度,因此我们经常会制定一个任意长度如varchar(300)。我们还有一种做法,就是把地址分解成地址一、地址二、城市、城镇、邮编等,这样我们就比较容易为每个字段指定相应的长度。
移除不需要的属性
尽管在你的维度表中有上百个列,这也并不意味着你必须在立方体中包含全部的这些列。多分析一下相应的报告数据和查询,再决定维度表需要哪些列。而且,你可以引入一个透视图,舍弃一些不必要的属性,但你必须知道,SQL Server 2005只有企业版和开发版能够创建透视图。
属性层次结构优化状态
在维度属性的高级选项下,我们可以指定属性层次结构的优化级别,如下图所示
菜单下有2个可选项,“全优化”和“不优化”,如果你选择了“全优化”,在相关的属性上将会建立索引。对于那些不经常使用的属性,我们可以设置成“不优化”,这样可以节省处理时间和硬盘空间等资源。
关闭属性层次结构
在分析时我们会使用绝大部分的的立方体属性,然而,总有那么一些属性我们在分析时不会用到。例如客户维度中,像生日,加入日期这些属性都不会用到,或者用到它们的时候,也只会把它们当作附加信息。这些属性,你就可以关闭其属性层次结构。
你能看到两个可用选项:True和False,如果属性层次不可用或者被设置成为了False,那这些属性就不能够被用户自定义层次结构所使用。
定义层次结构关系
大多数时候,维度中的属性和其他属性存在这一对多的关系。典型的例子是客户地址。对一个客户来说,什么是他的地址,国家?省份?城市还是邮编?我们可以在相关的维度中定义这些关系,从而提高立方体的处理和查询性能。属性关系能够帮助建立高效索引。当建立一个新的关系时,我们应该把多余的关系移除掉,否则,当非键属性在立方体中被单独使用的时候,那些多余的属性关系将阻碍数据的聚合。
我们可以将属性拖拽到一个名为新属性关系的空间来创建关系。下面的图片将显示已经创建关系的客户立方体。
选择合适的处理类型
对于一个立方体,有如下三种处理方式
全处理— 擦掉所有的数据再重建维度数据及其结构。
更新处理— 在维度中基于属性关系的类型实现插入,更新,和删除操作。不同类型的属性关系将会在后文中提到。
添加处理—提供了更新处理的一个优化版本,但只能处理数据插入。
通过选择正确的处理类型,我们就能够减少处理立方体的时间。
在命令行中执行预定的立方体处理
很多时候,你需要对立方体进行配置,从而能使其在预定的时刻被处理。幸好,我们可以使用SQL Server集成服务(SSIS)包为处理立方体设定调度计划。如果可以在命令行运行SSIS包,那将变得更快,我们可以通过如下的命令来执行SSIS包。
DTEXEC /f <Package Name with full path> |
分割
SSAS使用分区来存放立方体数据。小的立方体经常只使用一个分区,而中大型的立方体常被存放到名为分割的数据组中。
在实际工作中,为了保证效率,一个分割最多为2GB或者15,000,000条记录。无畏的分割不能提高立方体处理的效率,只会降低效率,而且,过多的分区通常很难管理。
需要说明的一点是,SSIS中的分割只有在SQL Server企业版和开发版中被支持。
配置SSAS
如果你能够在多处理器服务器上安装SSAS,请保持多分割能够并行地更新。
理想情况下,我们可以在两个单独的服务器上配置SSAS和数据库服务。如果只有一个服务器可用,势必会造成资源的竞争,而我们可以通过使用2个服务器来解决这一问题。然而,我们必须保证2个服务器中的网络是时刻畅通的,否则,任何提高性能的方法都是徒劳。当然,使用2个服务器也得考虑许可证的问题。
确保你已经安装了最新的SQL Server 2005服务包和适当的补丁。例如SQL Server 2005 SP2。当你使用ADOMD.NET 执行一个MDX查询,如果从立方体返回的结果集较大,SQL Server分析服务2005系统性能就会下降。
总结
下表中列出了性能改进的方法,及这些方法的作用一览。你能够从中清晰地看出,执行某个操作,将会带来什么好处。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接