SQL Server 2005 Analysis Services性能指南(二)

日期: 2007-12-19 翻译:Cheney Shue 来源:TechTarget中国

  理解查询构架

  为了使终端用户能有尽可能快速的查询体验,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]–>1. <!–[endif]–>找到数据—为了找到查询请求的数据,查询执行引擎将MDX查询分解成多个数据请求。又在与存储引擎通讯时,将这些数据请求翻译成存储引擎能够理解的子立方体请求,子立方体的数量依赖于查询的粒度和复杂度。子立方体代表了查询、缓存、查找数据的逻辑单元。注意,这里的子立方体是泛指,不要与MDX语句CREATE SUBCUBE所指的子立方体搞混淆。

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

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

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

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐