SQL Server 2005 Analysis Services性能指南

  介绍

  联机分析处理系统都需要快速的查询响应和及时的数据更新,以提供高效的数据分析。传统的OLAP系统使用层次组织和汇总数据,层次为有效地分析提供合理的数据结构。但严格的层次结构又限制了用户自由的组织和分析数据。

  为了提供更自由和更弹性的数据分析,Microsoft® SQL Server™ Analysis Services (SSAS) 2005既包含了传统层次分析的优点,又有新一代的更弹性的属性层次。属性层次允许用户在查询时自由的组织数据,而不限于设计好的导航路径。要支持这样的弹性化分析,Analysis Services OLAP构架经过了特殊的设计,以应用属性和层次分析,同时还保持传统OLAP数据库的快速查询性能。

  你需要理解OLAP构架是如何支持属性和层次构架,理解如何有效使用这种构架满足分析需求,以及如何让构架充分利用系统资源。

  注意 要使用此白皮书中讨论的性能调校技术,你必须安装了SQL Server 2005 Service Pack 2。

  为了满足各种OLAP设计方案的性能需要,此文档提供了广泛的指导,指导你使用更多手段优化Analysis Services性能。因为Analysis Services性能调校是非常宽泛的话题,此白皮书的内容按如下的四个章节组织。

  增强查询性能 – 查询性能直接影响终端用户的体验,也是衡量OLAP是否成功的主要标准。Analysis Services提供了多种机制加速查询性能,包括聚合、缓存、数据索引,而且你可以通过优化维度属性、cube、MDX查询语句来提升性能。

  调校处理性能 – 处理是更新Analysis Services数据库的操作。处理速度越快,用户能更及时地获取更新后的数据。Analysis Services提供了多种机制让你影响处理性能,包括有效的维度设计、合适的聚合、分区、节制的处理策略(例如用增量更新代替完全更新,主动缓存技术等)。

  为特殊应用优化设计 – 复杂的设计场景要求特殊的性能调校技术,以确保OLAP能够成功的应用,特别是复杂的设计再加上大数据量。例如,在OLAP中包含了特殊聚合函数、父子层次、复杂的维度关系、近实时地更新数据。

  调校服务器资源 – Analysis Services的操作受服务器资源的限制,理解Analysis Services如何使用内存、CPU和磁盘资源可以帮助你更有效的管理服务器,优化查询和处理性能。

  增强查询性能

  查询是指Analysis Services依据多维表达式(MDX)将数据提供给客户端应用程序。因为查询的性能直接影响到客户的体验,这部分将详述改进查询性能的几种手段。下面就是这部分的主要内容:

  理解查询构架 - Analysis Services查询构架支持三种主要操作:会话管理、MDX查询执行和返回数据。若要优化查询性能就需理解这三种操作如何协调工作实现查询。

  优化维度设计 - 经过良好调校的维度设计可能会是提高Analysis Services性能最重要的因素。创建属性关系和在层次中使用属性会影响到聚合设计、MDX计算、维度数据存储效率和磁盘读取数据的性能。

  最大化聚合数据 - 通过预汇总计算,聚合数据能够提高查询性能。为了最大化聚合数据,确保你有一种合适聚合设计以满足你特定的需求。

  使用分区增强查询性能 - 分区是一种将度量值组存储到独立物理单元的机制,这种机制能提高查询、处理性能,使管理更简便。而且分区能实现并发查询,可以通过聚合设计选项和服务端属性设置优化分区性能。

  编写高效的MDX语句 – 这部分详述如何编写高效的MDX语句,例如:1)在MDX语句中使用更精确和更窄的计算空间。2)设计多用户可重用的计算成员。3)用最简洁的方式编写计算成员表达式,使查询执行引擎能最有效的选择执行路径。

理解查询构架

  为了使终端用户能有尽可能快速的查询体验,Analysis Services使用了若干组件协同工作实现高效计算和返回数据。图1标明了在查询发生时三个主要操作:会话管理、MDX查询执行、返回数据,以及参与每部分操作的服务组件。

  

  图 1 Analysis Services查询构架

  会话管理

  客户端应用程序通过TCP IP或HTTP,使用XML for Analysis (XMLA)与Analysis Services通讯。Analysis Services使用XMLA监听组件管理所有的XMLA通讯。会话管理决定客户端连接到Analysis Services实例的方式。通过Windows认证,且拥有相关权限的用户才能连接到Analysis Services。在用户连接到Analysis Services后,安全管理依据用户在Analysis Services中的角色决定用户的权限。基于客户端应用程序构架和连接安全权限,当客户端应用程序连接到Analysis Services时,为客户应用程序创建一个会话,用户的所有查询请求都会重用这个会话,直到客户端应用程序关闭会话或在服务端终止会话。在查询执行引擎执行用户的请求时,会话提供了上下文。关于会话的生命周期,参考文档中“监控超时的空闲会话”章节。

  MDX查询执行

  查询执行引擎的主要工作是执行MDX查询,这部分概述查询执行引擎如何执行查询。关于优化MDX的细节,参考文档中“编写高效的MDX语句”章节。

  实际的查询执行过程分多步执行,从性能方面考虑,查询执行引擎必须考虑两种基本需求:找到数据和产生结果集。

  <!--[if !supportLists]--&gt1. <!--[endif]--&gt找到数据—为了找到查询请求的数据,查询执行引擎将MDX查询分解成多个数据请求。又在与存储引擎通讯时,将这些数据请求翻译成存储引擎能够理解的子立方体请求,子立方体的数量依赖于查询的粒度和复杂度。子立方体代表了查询、缓存、查找数据的逻辑单元。注意,这里的子立方体是泛指,不要与MDX语句CREATE SUBCUBE所指的子立方体搞混淆。

  <!--[if !supportLists]--&gt2. <!--[endif]--&gt产生结果集—为了处理从存储引擎查找到的数据,查询执行引擎使用两种执行计划来计算结果:可以批量计算整个子立方,或者计算单独的单元。通常,子立方体赋值路径更高效,但查询执行引擎依靠查询的复杂程度选择合适的执行计划。注意,同一查询的会分解成多个查询部分,因而产生多个子执行计划,而且这些子执行计划可以独立的选择两种执行计划中的一种,所以没有单一的全局计划方式。例如,要查询年际利润大于10%的分销商,查询执行引擎使用一个执行计划来计算每个分销商的年际利润,另一个执行计划用来筛选利润大于10%的分销商。

  当你执行一个MDX计算,查询执行引擎需要计算的单元数量可能远超出你的想象。比如,你使用MDX查询年初至今销售最大的五个区域。看起来你只需要五个单元值,但要决定哪五个区域销售最大,及计算年初至今销售值,Analysis Services必须计算更多单元。一个常用的优化手段是在MDX语句中将查询执行引擎所需计算的数据量最小化。要了解更多MDX优化手段,参考此文档中“指明计算空间”章节。

  当查询执行引擎计算单元,它会使用查询执行引擎缓存和储存引擎缓存保存计算结果。缓存的好处就是优化计算和支持计算结果重用。为了优化缓存重用,查询执行引擎可管理三种范围的缓存:全局范围、会话范围、查询范围。关于缓存共享和重用的信息,参考“利用查询执行引擎缓存”章节

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12641349/viewspace-103779/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12641349/viewspace-103779/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值