Databases Reference
In-Depth Information
In addition, Analysis Services supports different levels of allocations that define the life-
time and locality of allocated memory. There are five levels, as described in Table 27.3.
TABLE 27.3
Levels of Memory Allocations
Level
Description
Memory is allocated for the server-level subsystems, such as the thread
pools, the error-handling subsystem, and so on. ObjectAllocators are
available only on the Global level.
Global
Memory belongs to the metadata's major objects. This means that
memory allocated on this level is released when a major object is
destroyed. For example, a dimension has its own allocators and all attrib-
utes, hierarchies, and dimension caches are allocated from the dimension
allocator. All this memory is released when a new version of the dimen-
sion is created. Therefore, memory is fragmented only during the lifetime
of the dimension. For the new version of the dimension, previously accu-
mulated fragmentation goes away.
MajorObjects
Memory belongs to the session object and all the memory is released
when the session ends. For example, session scopes (discussed in
Chapter 29) are allocated with session allocators.
Session
Memory belongs to the current user request. After execution of the
request is completed, all information associated with this request is
destroyed (except for the data stored in the caches). This way, execution
of user requests does not fragment the memory.
Request
Memory is associated with the thread. This memory is released when a
thread is returned to the pool. This level does not require synchronization
because the allocators occur on the same thread. Therefore, thread allo-
cators are the best-performing allocators of the system, particularly the
Arena allocator, which can be released just once before the thread is
returned to the thread pool.
Thread
Each level of memory allocation has all the types of allocators (except for the
ObjectAllocator , which is supported only on the Global level). Depending on the opera-
tions it is performing, Analysis Services uses different types and levels of allocators.
Effective Memory Distribution with Memory Governor
Memory Governor defines the order of memory allocations for different operations.
Analysis Services can execute many operations in parallel; however, if an operation
requires a larger amount of memory, it can be blocked even with free CPU cycles. To
 
Search WWH ::




Custom Search