Databases Reference
In-Depth Information
Query Job
Thread
Request
Active
Thread
Return
Thread
Thread Pool
Normal Priority
Queue
IO
Completion
Port
High Priority
Queue
Low Priority
Queue
FIGURE 28.1
Thread pool architecture.
highest-priority requests get executed, the thread pool serves requests from the lower-
priority pool even when the higher-priority pool is not empty. You can configure the ratio
of requests served from the lower-priority pool to the higher-priority pool by using the
Analysis Services PriorityRatio property.
Analysis Services gives its internal requests higher priority than user requests. For example,
when relational online analytical processing (ROLAP) or the data-mining query requests
data stored on the same instance of Analysis Services, it issues the request for data to itself,
and this request is assigned highest priority.
If more than a single thread is needed to complete an operation, Analysis Services calcu-
lates the number of required threads and requests all of them simultaneously. This behav-
ior is necessary to prevent a situation called thread starvation, where multiple operations
are holding to some threads and cannot complete without getting more, and thus no
operation can finish execution and release its threads.
In rare cases, a server cannot accurately predict the number of required threads and
requests an additional thread from the pool after the operation has already started. In this
case, if the pool has idle threads and can immediately provide them to the operation, the
operation continues execution. Otherwise, execution of the operation fails with an error.
This mechanism guarantees execution of the operation without thread starvation.
 
Search WWH ::




Custom Search