Уменьшить параллелизм при обработке табличной модели SSAS с использованием TOM
Я обрабатываю наши табличные модели (уровень совместимости 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 ответ
Сценарий вызывает методы в неправильном порядке, поэтому $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)