什么是ssas:执行SSAS 2005中的预先缓存来源: 发布时间:星期四, 2009年2月12日 浏览:194次 评论:0
为了最优化多维数据集(cube)查询性能我们选择了MOLAP存储由于我们已经有许多多维数据集现在我们就专注于保持多维数据集是最新这是由于数据仓库中数据变化频繁您能给我们讲解如何实现SSAS中预先缓存Cache(Proactive Caching)功能细节吗? 专家解答 SSAS支持 3种存储模式: MOLAP – 存储压缩成专有格式细节数据和集合;比如完成数据个完整副本而查询性能是很好 HOLAP – 跟MOLAP样存储集合但细节数据则按照要求从关系数据源中存取 ROLAP – 从关系数据源可以存取细节数据和集合 请注意对于MOLAP 或者 HOLAP存储来说只要关系数据源改变了立方块就是废弃预先缓存Cache(Proactive caching)是SSAS中种可以让用户确定何时处理度量组分区和纬度功能这是由于关系数据源中数据经常变化当执行预先缓存Cache时SSAS会按照每个你指定参数自动解决保持立方块最新状态问题预先缓存Cache另种选择是开发个处理纬度和度量组分区SSIS包;你要定期执行这个SSIS包 预先缓存Cache个典型情况是你有个总是定期增加最新数据度量组分区然后在某个时刻那个分区和现有个分区合并了分区中数据经常是基于事务数据确定例如在白天发生新事务时你希望每小时更新分区到了晚上你会把分区内容整合到当前周分区中这种思路方法可以让你经常处理分区保持它更新到和关系数据源样但是需要每次都处理最小化数据 预先缓存Cache支持 3种告知SSAS关系数据源已经改变通知思路方法: SQL Server(2000或更高版本) 客户端启动 预定轮询 SQL Server通知只能在关系数据源是SQL Server 2000或更高版本数据库情况下使用当数据变动时SQL Server增加跟踪事件(Trace events)为了捕获这些跟踪事件SSAS定要以管理员权限连接到SQL Server用SQL Server通知度量组分区总是通过Full Process得到处理而Full Process丢弃分区内容并重建它利用Update进程来处理纬度而Update进程获得关系数据源中插入、更新和删除 通过发送个NotyTableChange XMLA命令到SSAS服务器来执行客户端启动通知比如每次数据仓库更新过程完成时个更新数据仓库SSIS包能够利用Analysis Services Execute DDL Task来发送NotyTableChange XMLA命令到SSAS 预定轮询仅仅定期查询关系数据源以确定数据是否改变 在这个思路方法中我们可以利用Adventure Works DW SSAS举例数据库连同SQL Server 2005来进行预先缓存Cache安装 执行预先缓存Cache 首先从Microsoft SQL Server 2005组中打开SSMS并连接到个分析服务服务器 步骤 深入到Adventure Works立方块Internet Sales度量组分区中 步骤 2 右键单击Internet_Sales_2004分区并从下拉菜单中选择属性在选择页列表框中单击预先缓存Cache显示对话框如下: 有些预先定义设置如上图所示默认设置是MOLAP且预先缓存Cache不可用比如SSAS不能自动更新分区你可以把滑块移动到标准设置中任何个地方你也可以启动个标准设置然后在底部对话框(在上面没有显示)按下选项按钮来定制 步骤 3 将预先缓存Cache设置对话框中滑块移至预定MOLAP接着点击底部对话框(上图没有显示)选项按钮;你会在常规选项卡上看到如下缓存Cache设置 就预定MOLAP设置而言我们看到定期更新缓存Cache选项是唯被选项而且重建时间间隔是1天所以分区会被每天处理 在缓存Cache设置对话框中有些其它选项当你把滑块移至区别标准设置你会看到这些选项如何变化现在让我们来描述这些选项和设置: Silence erval是在更新通知的后处理分区的前等待时间这考虑到在开始处理分区的前其它更新 Silence override erval是在更新通知的后处理分区的前等待最长时间如果没有Silence override erval你可以令人信服地拥有不断发生变化并且分区永远不会被处理 潜伏期(Latency)是关系数据源中有变化的后分区被处理时或的前你想利用MOLAP缓存Cache最大时间间隔换句话说当现有MOLAP缓存Cache正在重建时你有可能还在继续使用它旦潜伏期到来MOLAP缓存Cache将被删除查询可以通过返回关系数据源得到满足 MOLAP缓存Cache被重建时Bring _disibledevent=> 对于SQL Server和客户端启动通知你必须指定跟踪表比如哪张表你关心它是否有变动 对客户端启动通知你可以利用SSIS中Analysis Services Execute DDL Task并发送类似于以下内容XMLA: <Command> <NotyTableChange> <Provider>SQLOLEDB</Provider> <DataSource>localhost</DataSource> <InitialCatalog>AdventureWorksDW</InitialCatalog> <TableNotications> <TableNotication> <DBTableName>FactInternetSales</DBTableName> <DBSchemaName>dbo</DBSchemaName> </TableNotication> </TableNotications> </NotyTableChange> </Command> 步骤 5 单击通知标签中Scheduled polling radio按钮查看/安装通知选项: 该轮询时间间隔指定多久轮询关系数据源变化轮询查询旨在执行查询来确定是否有新行这个查询必须返回行和单独列比如像LoadedDate日期栏最大值SSAS必须保持返回值来确定它什么时候有变动若有变动则意味着需要载入新数据点击Enable incremental updates这样仅仅抽取关系数据源中新行这需要进入查询进程而查询进程必须通过从轮询查询中返回单列正确识别新行举例查询显示如下(你不能在对话框中看到整个查询): --AddLoadedDatecolumntotable ALTERTABLEdbo.FactInternetSales ADDLoadedDateDATETIMENOTNULLDEFAULTGETDATE --Pollingquery SELECTMAX(LoadedDate)LoadedDate FROMdbo.FactInternetSales --Processingquery SELECT*FROMdbo.FactInternetSales WHERELoadedDate>?ANDLoadedDate<=? FactInternetSales表没有可用于查询适当列所以增加了DATETIME列 你可以在预先缓存Cache属性对话框中尝试剩下标准设置以此来理解预先缓存Cache基本性能另外你可以通过定制化来满足具体要求 0
相关文章读者评论发表评论 |