Enqueue level of segment CIs
Allocation of CIs involves three different enqueue levels.
The enqueue levels are:
- A NO ENQ level, which is typical of any SDEP CI. SDEP segments can never be updated; therefore they can be accessed and shared by all regions at the same time.
- A SHARED level, which means that the CI can be shared between non-update transactions. A CI at the SHARED level delays requests from any update transactions.
- An EXCLUSIVE level, which prevents contenders from acquiring the same resource.
The level of enqueue at which ROOT and SDEP segment CIs are originally acquired depends on the intent of the transaction. If the intent is update, all acquired CIs (with the exception of SDEP CIs) are held at the EXCLUSIVE level. If the intent is not update, they are held at the SHARED level, even though there is the potential for deadlock.
The level of enqueue, just described, is reexamined each time the buffer stealing facility is invoked. The buffer stealing facility examines each buffer (and CI) that is already allocated and updates its level of enqueue.
All other enqueued CIs are released and therefore can be allocated by other regions.
The following figure shows an example of a DEDB structure.
