Databases Reference
In-Depth Information
same time as commands it controls, some balance will be maintained because memory for
all commands is allocated through Memory Manager, and Memory Manager controls the
state of the system by raising the price on memory.
Memory Governor makes decisions about providing memory to a job based on the current
state of the system, which enables Analysis Services to execute any set of jobs in parallel.
However, Memory Governor does not base its decisions on operations not yet submitted
to the system. On the other hand, the designer of the multidimensional model usually
knows all the operations that have to be performed and can plan the execution much
more efficiently. We recommend that you plan the execution of complex commands and
design a well-balanced Batch command, which will provide Analysis Services with the
sequence of operations that must be performed to achieve the best performance. (For
more information about the Batch command, see Chapter 26.)
Memory Models of Attribute and Partition Processing
The memory models of attribute and partition processing look very much alike. Therefore,
we will discuss how Memory Governor reserves memory during attribute and partition
processing by considering only a partition example.
In the first phase of partition processing, Analysis Services analyzes the amount of
memory that it will need to process a partition. (We discussed all phases of processing in
Chapter 21, “Dimension and Partition Processing.”) A partition-processing job is a
memory holder and is controlled by the economical memory management model.
However, it is not enough to use only the economical model. If Analysis Services would
give all the available memory to the job of processing a partition, it would not have
enough memory for other operations. You can use configuration properties to set up the
conditions under which Analysis Services makes the initial calculation of memory needed
for processing:
.
BufferMemoryLimit —Defines maximum amount of memory that Analysis Services
can use to execute the processing of one partition or one attribute
.
BufferRecordLimit —Defines the maximum number of records that can be stored
in the buffer of a single segment
Partitions are processed by a segment and Analysis Services uses two buffers: one to
process records and another one to compress records. To calculate the required memory,
the processing job evaluates the size of a single record in the processing buffer. The follow-
ing formula enables you to calculate the number of records that a processing job puts into
the buffer:
Nmax = (BufferMemoryLimit/RecordSize)/2.
This way you can find the maximum number of records that Analysis Services can put
into the buffer, knowing the amount of memory that processing can use. If this number is
larger than the allowed number of records in the buffer— BufferRecordLimit —Analysis
Search WWH ::




Custom Search