SSAS

来源:互联网 发布:网络创业与实践课答案 编辑:程序博客网 时间:2024/05/17 02:18

问题

有几个方面可能会影响分析服务cube的性能。比如,源系统,cube和MDX查询的设计,网络问题。在这一节,将讨论在设计和开发分析服务多维数据集时应该考虑的一些最佳实践。

解决方案

在本系列的第1部分中,我们讨论了典型的SSAS应用程序架构和SSAS内部架构的不同组件,以及不同组件和区域对性能改进所扮演的角色。在原文第2部分中,讨论了源系统设计和网络考虑,翻译版中删除了这一部分内容。在第2部分中,谈到了多维数据集设计和开发。在本文中,将与您分享服务器资源和报表服务的最佳实践和性能优化技术。

服务器资源优化

在本节中,将讨论一些SSAS实例属性,这些属性将影响多维数据集处理和查询响应的总体性能。

在SSAS中线程或并行处理

SSAS被设计成并行执行它的操作,因此它可以创建多个线程来并行执行多个请求。由于创建和销毁线程是一项昂贵的事务,SSAS维护了两组工作线程池,以返回当前未使用的线程,因此SSAS可以再次将它们用于服务其他请求。这两个池称为查询线程池和进程线程池。

如果你还记得本系列的第一节介绍的SSAS架构.XMLA侦听器侦听传入的请求,并创建(或者使用查询线程池中空闲的线程)查询线程检查数据/计算公式引擎缓存。如果缓存中没有想要的数据,XMLA侦听器创建或使用一个处理线程来从存储引擎缓存或磁盘中检索数据。进程线程还会将在从磁盘检索到的数据存储到存储引擎缓存中,同时查询线程将聚合数据存储到公式引擎缓存中以服务将来的查询。

因此,现在我们了解了SSAS能够创建的线程越多,可以并行处理的请求就越多。但是,可以创建多少个线程呢?可以通过设置一些SSAS实例属性来控制它

ThreadPool\Query\MinThreads(Max)

这两个属性决定了可以由SSAS创建的最小和最大查询线程数。

ThreadPool\Process\MinThreads(Max)

这两个属性决定了可以由SSAS创建的最小和最大处理线程数。

OLAP\Process\BufferMemoryLimit

SSAS在事实表分区处理过程中使用缓冲区来临时存储数据,然后在处理结束后将数据写到磁盘上。

OLAP\Process\AggregationMemoryLimitMin(Max)

默认的最小值为10%,最大值为80%。这表示可以在每个分区中创建聚合使用的最小和最大百分比的SSAS内存。如果有很多的分区在并行处理,则应该考虑将其保持在低位,以提高ProcessIndexes的性能(在每个分区中创建聚合)。

DataDir和LogDir

默认数据文件和日志文件存储位置。可以考虑将这些文件存储在更快的磁盘驱动器。

Log\FlightRecorder\Enabled

默认状态是ON,它在一个短期日志文件中记录SSAS活动。这个日志对处理和查询性能故障排除非常有用,但同时也会增加I / O开销。所以理想情况下,应该在生产环境中设置为OFF,并且只在需要时启用它。

报告设计与开发

SQL Server Reporting Services(SSRS)是SQL Server商业智能的报表组件。可以基于任何数据源创建报表,包括SSAS。当创建SSRS报表时,应该遵循一些最佳实践,以获得更好的用经验。

1.数据源级别过滤数据,而不是报表级别

2.启用报告缓存或快照

3.为报表创建标准或数据驱动的订阅

4.考虑SSRS部署的扩展性

原文地址:
https://www.mssqltips.com/sqlservertip/2568/ssas–best-practices-and-performance-optimization–part-4-of-4/

原创粉丝点击