Hi!
I´m trying to optimize a SSAS processing job.
My SSAS cubes are partioned and I´m trying to only process the affected partitions.
I use ProcessFull.
This works pretty good, takes a few minutes, but if I need to process historical data the processing seems to take a very long time.
It also seems like the performance is worse when I need to process a bigger number of partitions in parallell.
I have tried to pin-point the problem using some performance-counters and so on but I think I need some hints.
For example:
If I process several small fact-tables + one month of data (70.000.000) from a pretty "big" fact-table (400.000.000 rows) it takes around 22 minutes.
If I partition the same big fact-table into daily ssas-partitions and than tries to process the some one month of data (around 30 paritions, still a total of 70.000.000 rows) in parallell + the small fact tables
it takes around 3 hours to complete the processing.
The CPU utilization seems ok for the first minutes but after a couple of minutes the CPU utilization becomes very low (maybe 3 %) and stays there until the end of the processing when it goes up for some minute before processing completes. Maybe 95 % of the
time when running long processing the cpu is < 5 %.
In the begining the Proc aggregations->Rows read/sec counter is a couple of 100.000 but after some time this counter drops to just around 2.000. If looking under Disk in the Resource Monitor it looks like there is a lot of reading (~ 8 GB/min) going
on against the Data Warehouse (.mdf file) for almost the entire processing time.
Any hint on where to start looking? Because of the very low cpu utilization it seems like there should be some potential of increasing the processing speed.
Environment:
Sql server 2008
SSAS cubes and Data warehouse on the same server (discs).
Non-default-configuration done on the server :
Process\Maxthreads=160 (10*number of logical cores).
LowMemoryLimit=65
TotalMemoryLimit=80
Flight Recorder disabled
Query\Maxthreads=32 (2*number of logical cores)
Data Source on SSAS-database->Maximum Number Of Connections: 100.