DBA在SSAS方面需要了解什么?

我看过很多关于SSAS商业方面的资料,但对于管理和行政重要方面的内容却不多。 从管理SQL Server Analysis Services实例的角度来看,一个合格的数据库管理员需要了解哪些关于SSAS的知识才能正确高效地进行管理呢?
2个回答

DBA们快速了解SSAS

所以,你是一个SQL Server DBA,突然被交给一些立方体来管理。看起来需要快速学习一下SSAS管理知识。

从管理角度来看,SSAS是一个相对简单但资源消耗较大的应用程序。它比数据库管理系统平台要简单得多,尽管在几个方面有所不同。此外,还有一些特定于SSAS的管理任务,例如基于使用情况的优化,你可能需要理解清楚。

备份配置文件

所有配置数据都存储在一个名为msmdsrv.ini的文件中,它是一个XML文件。如果你通过SSMS(连接到服务器,右键点击服务器,选择属性)进行配置调整,可能会设置一些导致服务器启动失败的选项。在进行任何操作之前,请先备份msmdsrv.ini文件。

重要参数

内存:SSAS是一个占用内存很多的东西。如果可能的话,它喜欢64位构建,并且需要大量的内存。参数'Memory\LowMemoryLimit'和'Memory\HighMemoryLimit'控制内存使用策略。LowMemoryLimit不是最小的内存分配量,而是一个阈值,当SSAS认为系统内存不足时,它会开始清除缓存中的内容。HighMemoryLimit是它将使用的绝对最大值。

请注意,SSAS将其数据存储在文件中(大量的文件 - 它没有任何等效于文件组的机制),因此它对于这些文件大量使用操作系统文件系统缓存。请注意,这些限制的默认值分别约为机器内存的65%和80%,因此如果您希望OLAP服务器与SQL Server实例共存,您需要将这些限制降低,以免与数据库服务器争夺内存。

目录:有五个感兴趣的参数涵盖了这一点:DataDir、AllowedBrowsingFolders、BackupDir、LogDir和TempDir。DataDir和AllowedBrowsingFolders是最重要的。

  • AllowedBrowsingFolders影响OLAP服务器将其数据文件放置在的文件夹列表。任何带有用户界面的东西(例如部署向导)都会限制您在AllowedBrowsingFolders列表中的选项。该值是一个以管道符('|')分隔的目录列表。

  • DataDir是文件的默认路径。如果您打算将立方体分区到多个卷上,您需要适当配置AllowedBrowsingFolders。

  • LogDir是服务器放置各种日志文件的位置,包括飞行记录器和查询日志。飞行记录器日志用于故障排除,OLAP查询日志用于基于使用情况的优化(稍后详细介绍)。

  • TempDir是SSAS在处理过程中创建临时文件的位置。如果您正在处理大量数据并且遇到性能问题,将其从数据移至另一个卷可能会有所好处。

  • BackupDir就是它的名字所说的。

其他: 还有一些其他参数可能也会引起兴趣。您可能需要调整的一些设置包括:

  • DefaultMaxDrillthroughRows: 这限制了钻取行集的大小。你可能需要调整它来允许更多。

  • Threads/Timeouts: 你可能需要调整这些。我从来没有遇到过这个问题。

这些是基本设置。你可能需要根据具体情况进行微调,但你可以自己做一些功课。

SSAS服务器属性的参考指南可以在这里找到。

操作

部署:你可以在BIDS中编译一个项目,并获得一组可以使用部署向导部署的文件。你可能需要调整分区和其他一些文件路径。

编程和批处理的管理任务:通过名为XML/A的Web服务API向SSAS发出命令。微软提供了一个交互式工具,用于发出MDX和XML/A命令。如果您需要在XML/A命令中嵌入MDX,请注意需要使用XML转义字符,例如&。这在SSMS中的MDX编辑器和查询工具中不是问题。 离线作业可以通过各种SSIS立方体处理任务、一个名为ascmd.exe的命令行实用程序或一个名为AMO的.NET API来完成。您还可以使用各种PowerShell工具等。 ascmd.exe接受一个XML/A文件并将其发送到服务器。如果您需要以编程方式修改文件,最好使用一些小的.NET工具,而不是尝试从.cmd脚本中操作XML文件。 操作指南对此进行了更详细的说明。 安全性 SSAS的安全性相对简单。它有一个全局的“服务器”角色,拥有整个系统的管理权限。不幸的是,你需要“服务器”角色来创建数据库,所以很可能你需要在任何开发OLAP服务器上授予开发人员这个角色。 其他安全性只能应用于单个立方体模式。你可以授予角色在模式内的单个项目上的读取、处理、钻取、回写等权限。OLAP模式上的角色可以在BIDS中定义,并与立方体一起部署。AD组或用户可以通过SSMS分配给这些角色。 关于如何以编程方式管理角色成员资格的示例可以在这里看到。 基于使用情况的优化 作为一个数据库管理员,你可能会参与其中,但首先让我们来了解一下物理存储的背景。SSAS通过计算和持久化预建聚合数据以及基础数据来工作。如果一个查询可以通过命中聚合来满足,OLAP服务器将优先使用它,因为聚合涉及的I/O要少得多,所以检索数据会更快。 然而,你需要确定要计算哪些聚合(即生成哪些维度属性组合的汇总)。BIDS有一个工具可以猜测并为你生成一些聚合。一些工具,比如BIDS助手,还允许你手动编辑聚合。 基于使用情况的优化通过记录实际发给服务器的查询日志,并利用该日志来确定一组对这些查询最优的聚合。作为一个数据库管理员,你可以设置OLAP查询日志来捕获这些数据,然后在立方体上运行优化。关于设置查询日志的详细信息可以在这里找到。 进行这项工作的工具被称为“基于使用情况的优化向导”。它位于SSMS中,可以通过打开资源管理器中的分区并从右键菜单中选择“基于使用情况的优化”来找到。 性能指南对调优进行了更详细的介绍。 MDX MDX看起来有点像SQL,但工作方式完全不同。《面向SQL程序员的MDX论文》是一个专门的课题。我建议阅读一些相关教程或者购买一本书来学习。此外,在dba.se网站上的热心朋友们也可以帮助解答问题。 MDX在过滤行的概念上并没有任何概念。该语言有很多集合操作来确定查询的各个轴上显示的内容1,还有'SELECT'。您可以使用类似CTEs的with语句来定义度量和集合。 一些入门级的MDX编程资源可以在这里找到herehere(后者相当陈旧且冗长)。此外,还有一些关于这个主题的好书;this SO question中有很多与SSAS资源相关的信息。 尽管它确实具有限制结果为实际包含数据的组合的非空运算符。大多数MDX查询由定义在轴上显示的切片组成,非空运算符是必要的,以避免查询返回组合级别数量的空单元格。

你可以从这篇冗长的白皮书SQL Server 2008 R2 Analysis Services Operations Guide中找到关于SSAS管理的一些答案。以下是介绍的开头部分: 在本指南中,您将找到有关如何在生产环境中测试和运行Microsoft SQL Server Analysis Services(在SQL Server 2005、SQL Server 2008和SQL Server 2008 R2中)的信息。本指南的重点是如何在最大规模的立方体上进行测试、监视、诊断和解决生产问题。本文还提供了有关如何配置服务器以获得最佳性能的指导。 显然,这是针对数据库管理员/管理员的。如果您还使用SSAS开发应用程序,您也可以查看Analysis Services 2008 Performance Guide Whitepaper

我不能根据经验来说,因为我不直接从事SSAS的工作 - 我只是试着通过阅读上面提到的白皮书的一些部分,并且我几个月前还接受了Pragmatic works的为期两天的培训并阅读了这本由培训师撰写的书http://amzn.to/za1ypP。此外,关于这本书的一个非常基本的介绍可以在第17章找到 - Beginning Microsoft® SQL Server&® 2008 Administration