Databases Reference
In-Depth Information
ciently, Analysis Services requires all its related attributes to be loaded in memory.
Therefore, during processing of the key attribute, all its related attributes—all other attrib-
utes of the dimension—have to be loaded in memory. If a server doesn't have enough
resources, this can cause severe degradation in performance, or even cause Analysis
Services to run out of memory and raise an error.
Execution of Processing Plan
The processing of each attribute is done in three parallel tasks: reading the data from the
source, processing this data, and writing the data into attribute data structures. Therefore,
to process an attribute, Analysis Services creates a tree of processing jobs in which each job
is responsible for the completion of one of these tasks. In addition to those three jobs,
Analysis Services creates a job that groups all three tasks and is responsible for the process-
ing of an attribute. This job is grouped with similar jobs for other attributes to form a tree
of jobs responsible for the processing all attributes in a dimension. Analysis Services uses a
subsystem called the Job Coordinator to control and coordinate the execution of the jobs.
Some jobs cannot start before other jobs finish. Analysis Services adds dependencies
between the jobs to prevent certain jobs from executing before the jobs on which they
depend are finished. Job dependencies enable Analysis Services to execute processing of
the dimension attributes according to the processing plan.
To process an attribute, Analysis Services first estimates the amount of memory it needs
and tries to allocate the memory required for attribute processing. If Analysis Services
cannot allocate the estimated amount of memory for attribute processing, it returns an
error to the user. You can configure Analysis Services to ignore this error and let it proceed
with attribute processing by using the MemoryLimitErrorEnabled server configuration
property. In that case, however, execution tasks could “starve” because of a lack of
resources, forcing Analysis Services to block or terminate them. For more information
about memory allocation, see Chapter 27, “Memory Management.”
In the next step, Analysis Services tries to obtain the threads that are required to process
an attribute from the thread pool. If it can't obtain enough threads for attribute process-
ing, Analysis Services blocks the processing until the required number of threads becomes
available. To start the attribute-processing task, Analysis Services needs three threads at
once: one for reading data, one for processing data, and one for writing data.
NOTE
Threads that can be used for processing are kept in the processing thread pool.
When the processing job that requested a thread finishes, the thread returns to the
thread pool.
Figure 21.2 shows the major execution steps that happen during attribute processing.
Search WWH ::




Custom Search