使用多维分割来改善分析服务性能
2008-12-30 14:09
148 查看
alimama_pid="mm_10312158_369697_0";
alimama_sid="109401960027_142864_100044";
alimama_feedback="0";
alimama_titlecolor="0000FF";
alimama_bgcolor="FFFFFF";
alimama_bordercolor="E6E6E6";
alimama_bottomcolor="FFFFFF";
alimama_width=120;
alimama_height=240;
使用预先计算的概要数值(聚合),MSAS可以帮助你在几秒钟之内生成一份报告,而类似的一份报告如果是运行在关系型数据库管理系统上面的话,则需要几个小时。但是即使是有多个聚合,MSAS仍然可以在处理巨大量数据的时候尽力提供优化的性能。在这篇贴士中,我将会讨论使用多维分割的好处——这是一个强有力的机制,可以改善查询性能,减少与多维处理有关的停机时间。
分割的好处
分割可以提供很多潜在的好处,总结所示:
1、缩短的停机时间:一部分典型的数据仓库是相对多变的,需要经常对其进行处理。另一部分则相对静止。例如,在销售立方中,你很可能每天晚上都要修改当年的数据(或者甚至是每个小时),但是前些年的销售则只会偶尔变化,由于退货或者换货的原因。你可以为当年的销售创建一个分区,其他的分区则包含前些年的所有销售记录。如果你的仓库检索过去10年发生的销售情况,那么只在当前分区处理,可以能会比处理整个立方体快10倍。
2、更好的查询性能:在超过10年的数据上进行的查询可能会比那些只搜索当年数据的查询花费长得多的时间。如果你有合适的分区,分析服务只会扫描全部数据中的一小部分即可返回结果,这可以转化为性能上的巨大改善,比较那些运行在多个(默认)分区上的查询而言。
3、更加集中的聚合:MSAS 2000 和MSAS 2005都可以让你为每个分区进行不同的聚合。经常被查询的分区可以从额外的聚合中获益,因此会带来更好的性能。那些没有经常使用的分区可以以较低的频率处理——也许是每个月或者每个季度——它的聚合则相对少得多。基于使用的优化想到可以在每个分区上执行,以此来判断哪些额外的聚合可能会带来真正在某个分区上执行的查询的性能的改善。
4、定制度存储和处理设置:频繁访问的分区可以从预缓冲和RELAP存储中获益。换句话说,对于查询频率较低的分区来说,其他格式的存储和处理可能更好。
5、分布式查询和处理负载分布在多个服务器上:MSAS可以让你创建远程分区;一个放置在服务器上的远程分取与它的父多维体不同。在这种方式下,服务器对影响远程分区的查询的处理方式与它的父立体不同。它可以让你充分利用额外的处理能力。
6、并行处理的分区:在MSAS2005中,你可以在拥有多个处理器的服务器上并行处理多个分区。这可以进一步减少整体的多维处理时间。
分区的缺点
我曾提到过,MSAS 2000可以让你在多个分区内包括同样的数据,这一点可能会导致你的报告中的计算出现失误。幸运的是,微软在MSAS2005 中修正了这个问题。也许,重要的是分区需要更多的工作。你必须判断可以正好代表了通常的报告中的数据的数据集,然后相应的分割数据。还有,你必须要决定使用哪个存储模式,并且让聚合计划对每个分区有意义。更多的分区意味着额外的维护负担,因为你必须合并一段时间内的多个分区。
我们假设你的大部分分析报告查询的都是当前月份的数据;你可以用一个分区存放当前月份的数据,然后你每天去更新它(也许是每小时),再用一个分区存放当年的所有以前月份的数据,一个分区存放以前年份的。一旦当前月份结束了,你就必须要合并“当前的”分区到当年的分区,然后创建一个新的分区给当前的月份。正如我前面提到的,MSAS只能让你用同一个聚合合并2个分区——所以你必须在合并之前重新构建你的聚合。
即使是有这样的缺点,分区仍然是改善分析查询性能的无价的工具。还有,更重要的是,他们减少了多维的处理时间,并且增加多维的可用性。
算算你需要多少聚合
你为你的多维体创建的聚合的数量依赖于你的用户的分析需求。越多的聚合通常会带来更好的查询性能,但是它们也会使用更多的磁盘空间,并且增加多维体处理的时间。
通常,磁盘空间不是一个重要的考虑因素,原因如下两点:
1. 存储的成本每天都在下降,构建一个数据仓库的费用也大大超过存储的成本。
2. MSAS提供了有效率的多维OLAP (MOLAP)储存选项:一个关系型仓库通常是以几个GB来衡量的,它只需要几百个MG的字节来存储聚合。
相关文章推荐
- 使用多维分割来改善分析服务性能
- 使用分析服务多维模式建立简单的分析模型
- 使用 Spark 进行微服务的实时性能分析
- 使用分析服务多维模式建立简单的分析模型
- 使用 Spark 进行微服务的实时性能分析
- 使用Trepn Profiler工具分析Dragonboard410c的功耗和性能(二)
- MySQL性能分析及explain的使用
- 如何使用strace+pstack利器分析程序性能
- Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数
- Linux下Java线程详细监控和其dump的分析使用----分析Java性能瓶颈
- 移动数据分析服务使用教程
- Android 性能优化之使用MAT分析内存泄露问题
- 正确使用Android性能分析工具——TraceView
- Linux系统下常见性能分析工具的使用
- MySQL性能分析及explain的使用
- MySQL性能分析及explain的使用
- MySQL性能分析及explain的使用
- 转载:使用IBM Page Detailer 分析Web 应用性能与调优
- 如何使用Thumb-2改善代码密度和性能
- Android 性能优化 五 性能分析工具dumpsys的使用