您现在的位置:首页 > 教案格式 > 正文

性能测试 监控数据库 分析 合理处理SSAS数据库的几点建议

2017-12-22 14:07 网络整理 教案网

系统性能监控_性能测试 监控数据库 分析_数据库写入性能测试

今天又有朋友遇到SSAS数据库处理速度慢的情况,主要是由于数据聚合量确实很大,每次处理都要超过三十分钟,有没有什么方法能让处理的时间少一些呢?

从事BI工作有七个年头了,这样类似的问题绝对可以排在职业圈内TOP 10的FAQ当中。这样的问题往往都略有复杂,在此根据遇到过的一些场景,罗列一些自己的经验。

由于篇幅限制,这里只介绍遇到问题时的解决思路,详细的操作我会链接到我的其它随笔供大家实际操作的时候参考,还有很多建议上的细节都尽量标出官方文档的出处供大家获取更多内容。

提升数据仓库层相关表的查询效率

SSAS数据库在处理时,要向数据仓库层抛SQL查询。所以对相应的维表和事实表进行优化是这一步的关键。

我先前见过一个情况,就是有一个项目的事实表是一个视图,而这个视图里有比较复杂的运算和连接。所以每次处理多维数据集的时候,都要等查询要准备好久才开始读取数据。后来我建议定期把视图里的数据放到一张表里,保证每次读事实表的数据不用经过视图而是直接读已经处理好的数据。

这是最简单直接的方法,将事实表的数据"实体"化,让视图中的数据计算一次然后将结果保存到表中,以保证后续的查询分析应用都可以快速的得到结果。

剩下的就是基本的数据库优化,比如索引优化等,此外还有大数据解决方案如HADOOP或者PDW等,这部分的内容已经远远超出了本文所描述的范围,这里不再做详细讲解。

增量更新

这是最常用的一个方法。性能测试 监控数据库 分析假如每个周期产生的数据量是100mb,那么在刚开始的几个处理周期里可能不会有问题,但假如说你的处理周期是每周或者每天,那么随着时间的推移你的历史数据会越来越多,每次都全量处理就不是很明智。所以我们就需要用增量的方法来处理数据。

在SSAS中,增量处理需要指定增量查询。也就是说,需要你有一个严格的数据流程。首先,增量处理之前,你需要把增量数据预备好,在增量处理完之后,还需要妥善的处理增量数据(比如在表或者视图中),避免重复进行的增量处理导致数据翻番。

如果数据仓库有更新的情况,可以在设计数据仓库的时候考虑1-1+1的方案。具体方法这里只说一个思路,大家可以根据自己系统的情况进行设计。

具体的参考流程,可以参考我先前的一个笔记:

BI笔记之---增量方式处理多维数据集

这篇将介绍如何生成测试数据然后利用这些测试数据演示如何做基本的数据增量更新,同时也会让你对多维数据集的增量更新有一个了解。

建立分区

跟数据库里的表一样,SSAS的多维数据集也可以建立分区。理论上来说,建立分区对数据的处理速度不会有太大的影响,但是之所以放在这里,是由于,可以借助分区的方式,来间接的实现"增量更新"。

上一步对增量更新的介绍,你可以看到实际操作起来是有多复杂。借助分区的方式,你就可以多少偷一下懒。具体的思路就是,把多维数据集按照某一维度进行分区,时间或者空间的方式均可。比如按照时间的方式,以月为粒度进行分区。然后在每次处理的时候,只处理增量数据点所在的那个分区。性能测试 监控数据库 分析

系统性能监控_性能测试 监控数据库 分析_数据库写入性能测试

这个方法的关键点就是如何自动的识别出那个待处理的分区。我个人认为主要在于多维数据集的设计要完全按照一个严格的标准。比如对分区名称有一个严格的命名规范,以让代码可以很容易的找到这个分区。

具体的操作方法,可以参考我先前的一个随笔:

BI笔记之---Cube增量处理的一个场景的处理方案

里面主要介绍了用编程的方法来根据指定的规则,找到待处理的分区,然后对其进行处理。

Cube的分区大小到底设置多大才合适,这个问题经常被问到。在这里文档中有一处可以参考: