Уменьшить параллелизм при обработке табличной модели SSAS с использованием TOM - PullRequest
0 голосов
/ 18 сентября 2018

Я обрабатываю наши табличные модели (уровень совместимости 1200), используя Табличную объектную модель и сценарий powershell.Сценарий использует некоторые метаданные, чтобы определить, какие разделы необходимо обработать для данной таблицы, а затем выполняет 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, к которому подключается таблица, я вижу несколько запросов (8 из которыхвремя) из моей коробки SSAS независимо от того, что я установил MaxParallelism.Читая документацию по этому свойству, это значение не гарантирует параллелизма, поскольку сервер может применять другие ограничения.Я не вижу никаких свойств сервера , в которых упоминается параллелизм.Каковы другие ограничения / почему это свойство не влияет на количество запросов, выполняемых одновременно?

1 Ответ

0 голосов
/ 18 сентября 2018

Сценарий вызывает методы в неправильном порядке, поэтому значение $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)

...