创建并管理SQL Server Analysis Services分区(二)

日期: 2009-07-22 作者:Baya Dewald翻译:孙瑞 来源:TechTarget中国 英文

你还可以将一个分区同表、视图和SQL查询绑定。如果一个关系型数据仓库有多个表单存储事实数据,并且表单大小不超过建议范围,那么你就应该将分区同表绑定。如果你有一个单一的大事实表,那么你可以为每一个Analysis Services分区写一个SQL 查询来检索部分数据。    视图为分区绑定提供了一个不错的选择,特别是在做立方体测试时。

例如:如果事实表有数百万行数据,那么对它的处理就会十分耗时。在测试解决方案时,你不必读取所有数据,而只需创建一个视图,只选择表中部分行就可以了。    然后,当你准备将方案应用到生产中时,修改你的分区定义,让它们同适合的表、查……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

你还可以将一个分区同表、视图和SQL查询绑定。如果一个关系型数据仓库有多个表单存储事实数据,并且表单大小不超过建议范围,那么你就应该将分区同表绑定。如果你有一个单一的大事实表,那么你可以为每一个Analysis Services分区写一个SQL 查询来检索部分数据。 

  视图为分区绑定提供了一个不错的选择,特别是在做立方体测试时。例如:如果事实表有数百万行数据,那么对它的处理就会十分耗时。在测试解决方案时,你不必读取所有数据,而只需创建一个视图,只选择表中部分行就可以了。 

  然后,当你准备将方案应用到生产中时,修改你的分区定义,让它们同适合的表、查询和视图绑定。 

  你如何决定什么样的数据应该出现在分区当中?SQL Server Analysis Services使用分区来加速MDX查询。每个分区都包含一个XML文件,它定义了某个分区内的成员维度标识范围。当执行一个MDX查询时,Analysis Services引擎将根据每个分区中的XML文件value来决定扫描那些分区文件。 

  XML文件是在处理分区时创建的,它存储在每个分区文件夹中。不要试图编辑它,因为维度的关键参考值是内部值,SQL Server Analysis Services不可以进行检索。 

  如果MDX查询的数据请求遍布度量组的所有分区时,Analysis Services就不得不读取所有分区。想要知道度量组中哪些分区被读取了,你可以记录一个SQL Profiler追踪。如果查询数据请求只存在于单一分区中,你的查询只需扫描一个分区文件就可以了。 

  读取一个500MB的文件总比扫描总大小相同的200个文件要强。如果你要读取200个分区,Analysis Services可以并行扫描器中的一部分。要是有良好的分区设计,你就不必非要进行200次的缓慢查询了。 

  为达到最佳MDX查询性能,你应该调整分区设计以适应普通查询。大多数SQL Server Analysis Services方案都以使用数据或周期维度的度量组分区开始,每个分区生成一个月或一天的数据。 

  如果你的查询通常集中在某个月内,这不失为一种好的方法。但是如果查询检验所有月份的数据并具体到产品类别该怎么办?这样的话,按月分区并不是最佳方法。 

  如果你有十年内的有用数据,并按月分区(这种情况并不常见),那每个查询将检索120个分区。这种情况下,如果按照产品类别维度来适当增长分区日期跨度,那么查询性能无疑会更好。 

  像其他SQL Server Analysis Services对象一样,分区拥有大量属性。而被谈论最多的恐怕就是partition slice了。这一属性定义了度量组中的部分数据,Analysis Services期望它们被分区曝光。 

  大多数Analysis Services资料建议不必为多维OLAP存储分区而设置partition slice属性。然而在大多数情况下,Analysis Services可以通过检测info.xml文件中的数据ID来判断每个分区中的成员维度,为安全起见你应该设置partition slice属性,无论分区采用哪种存储模式。 

  partition slice通过MDX定义。下面是一个例子,2001分区的slice定义: 

  [Date].[Calendar].[Calendar Year]. &[2001]  

  按照产品分类进行数据分区,slice定义如下: 

   ([Date].[Calendar].[Calendar Year]. & [2001], [Product].[Product Categories].[Category]. & [1])  

  你如果在某个维度中没有定义slice,SQL Server Analysis Services就默认为任何维度中的成员都能在分区中找到。 

  例如:在partition slice中指定一个月份和产品类别但没有指定商店。按照商店检索销售数据的查询可能就会检索所有分区了。 

  你还可以为每个分区都自定义一个存储模式。MOLAP存储模式对于数据检索是最佳的,但它会对你的相关数据进行拷贝。如果不想拷贝,你可以使用关系型OLAP模式。比如:最近的分区可以使用MOLAP模式而原来的分区可以使用ROLAP。 

  SQL Server Analysis Services对于分区数有一个上限2,147,483,647,但是cube拥有这么多分区的情况并不常见。所以不必担心分区上限问题。 

  但数据很陈旧并很少有人访问时,你可以把原来的分区合并为周分区或月分区。你可以使用SSMS来合并分区,右键点击分区选择合并分区选项。 

  以下是一个合并分区的XMLA: 

<MergePartitions   
>   
  <Sources>   
    <Source>   
      <DatabaseID>Adventure Works DW 2008</DatabaseID>   
      <CubeID>Adventure Works</CubeID>   
      <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>   
      <PartitionID>Internet_Sales_2002</PartitionID>   
    </Source>   
  </Sources>   
  <Target>   
    <DatabaseID>Adventure Works DW 2008</DatabaseID>   
    <CubeID>Adventure Works</CubeID>   
    <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>   
    <PartitionID>Internet_Sales_2001</PartitionID>   
  </Target>   
</MergePartitions>

作者

Baya Dewald
Baya Dewald

Baya Dewald,数据库咨询师,主要帮助客户用SQL Server和Analysis Services开发高可用的和升级应用软件。在他的职业生涯中,他负责过管理过数据库管理员团队等工作。Baya主要专攻领域有:性能调优、复制和数据仓储。你可以通过baya@bayasqlconsulting.com跟他联系。

翻译

孙瑞
孙瑞

相关推荐