使用TOM处理SSAS表格模型时,降低并行度

时间:2018-09-18 20:59:13

标签: powershell ssas-tabular ssas-2016

我使用Tabular Object Model和powershell脚本处理表格模型(兼容级别1200)。该脚本使用一些元数据来确定需要为给定表处理哪些分区,然后在这些分区上执行process full。在某些情况下,脚本会在整个表上执行Process Full(例如,第一次将模型部署到服务器后)

当脚本处理整个表时,我希望能够控制在任何给定时间针对数据源执行的并发查询数量,因此在我的脚本中,我创建了Microsoft.AnalysisServices.Tabular.SaveOptions的新实例。并将MaxParallelism属性设置为1到10之间的一个数字。然后将更改保存到服务器上的模型中,并等待处理完成。

$serverTable.RequestRefresh([Microsoft.AnalysisServices.Tabular.RefreshType]::Full)
$db.Update( "ExpandFull")
$saveOptions = New-Object Microsoft.AnalysisServices.Tabular.SaveOptions
$saveOptions.MaxParallelism = $maxParallelism   
$result = $db.Model.SaveChanges($saveOptions)

如果监视表连接的SQL Server,则无论我将MaxParallelism设置为什么,都可以从SSAS框中看到几个查询(大多数情况下是8个)。通读该属性上的documentation时,此值不能保证并行性,因为服务器可能会强制执行其他限制。我没有看到任何server properties提及并行性。还有什么其他限制/为什么此属性不影响同时运行的查询数?

1 个答案:

答案 0 :(得分:1)

脚本以错误的顺序调用方法,因此直到处理完成后才在服务器上设置$maxParallelism值!

--Call the SaveChanges method with the SaveOptions before you RequestRefresh
$saveOptions = New-Object Microsoft.AnalysisServices.Tabular.SaveOptions
$saveOptions.MaxParallelism = $maxParallelism  
$result = $db.Model.SaveChanges($saveOptions)
$db.Update( "ExpandFull")
$serverTable.RequestRefresh([Microsoft.AnalysisServices.Tabular.RefreshType]::Full)

使用$maxParallelism的不同值对此进行测试,我可以看到SSAS现在开始与传入的值开始相同数量的查询。(最多8个)