我使用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提及并行性。还有什么其他限制/为什么此属性不影响同时运行的查询数?
答案 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个)