你还可以将一个分区同表、视图和SQL查询绑定。如果一个关系型数据仓库有多个表单存储事实数据,并且表单大小不超过建议范围,那么你就应该将分区同表绑定。如果你有一个单一的大事实表,那么你可以为每一个Analysis Services分区写一个SQL 查询来检索部分数据。 视图为分区绑定提供了一个不错的选择,特别是在做立方体测试时。
例如:如果事实表有数百万行数据,那么对它的处理就会十分耗时。在测试解决方案时,你不必读取所有数据,而只需创建一个视图,只选择表中部分行就可以了。 然后,当你准备将方案应用到生产中时,修改你的分区定义,让它们同适合的表、查……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
视图为分区绑定提供了一个不错的选择,特别是在做立方体测试时。例如:如果事实表有数百万行数据,那么对它的处理就会十分耗时。在测试解决方案时,你不必读取所有数据,而只需创建一个视图,只选择表中部分行就可以了。
然后,当你准备将方案应用到生产中时,修改你的分区定义,让它们同适合的表、查询和视图绑定。
你如何决定什么样的数据应该出现在分区当中?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,数据库咨询师,主要帮助客户用SQL Server和Analysis Services开发高可用的和升级应用软件。在他的职业生涯中,他负责过管理过数据库管理员团队等工作。Baya主要专攻领域有:性能调优、复制和数据仓储。你可以通过baya@bayasqlconsulting.com跟他联系。
翻译
相关推荐
-
使用SSAS的翻译功能实现报表的国际化
翻译是Analysis Services对象的名称在特定语言中的表示形式。对象包括度量值组、度量值、维度、属性、层次结构、KPI、操作和计算成员。
-
创建并管理SQL Server Analysis Services分区(三)
分区会降低处理度量组数据的时间,因为每个分区都只是负载部分事实表和视图。在运行期间,SQL Server Analysis Services会先修改查询并定义分区。
-
创建并管理SQL Server Analysis Services分区(一)
分区是SQL Server Analysis Services度量值组的一部分,它保存度量值组的一些或全部数据。当一个度量值组被首先创建之后,它包含了一个单一的分区。
-
我可以在同一个分区中安装三个Oracle产品吗?
我想要安装Oracle 9i数据库,Oracle 10g开发工具,和软件包。我想知道安装这三个产品的步骤,以及我能否将他们安装到同一个分区中。