TurboIMAGE/XL Database Management System Reference Manual MPE/iX V6.5 (30391-90011)
Chapter 10 479
Internal Structures and Techniques
Scalability
Scalability
In versions prior to C.07.00, TurboIMAGE/XL serialized the execution of DBPUT,
DBDELETE, and DBUPDATE when critical item update (CIU) is enabled, to protect the
structural integrity of the database. This serialization is done via a semaphore known as
PUTDELETE semaphore. This translates into processing only one DBPUT, DBDELETE, or
DBUPDATE with CIU enabled at a time for every database. This is acceptable for the
low-end machines but not for the high-end and multi-processor machines. It became
imperative that TurboIMAGE/XL scale to the performance of these high-end and
multi-processor machines. That is, TurboIMAGE/XL must increase the throughput of the
intrinsics, DBPUT, DBDELETE, and DBUPDATE with CIU enabled, which are collectively
termed modify intrinsics. In order to achieve this, the approach taken is to increase the
concurrency of the modify intrinsics.
Approach in Version C.07.00
The enhanced approach in TurboIMAGE/XL version C.07.00 (and later) is based strictly on
the database design and is optional. By default, TurboIMAGE/XL continues to work the
way it did in versions prior to C.07.00. For the revised approach, the database is internally
grouped by TurboIMAGE/XL into independent sub-databases based on physical
linkages/relationships or dependency of master and detail data sets. In addition, it uses
multiple semaphores as well as a speciļ¬c criteria to lock the necessary semaphores for a
sub-database. The result is that the modify intrinsics can execute concurrently for these
independent sub-databases.
In brief, the criteria pertaining to semaphores is as follows:
1. Assign ONE semaphore for each data set.
2. When modifying a master set, lock only the semaphore for this master.
3. When modifying a detail data set, lock the semaphore for the detail as well as all its
related master sets, manual as well as automatic. This can result in locking 1
(minimum, standalone detail) up to 17 (maximum, 1 + 16) semaphores.
To illustrate this, look at the following diagram:
Figure 10-5. Independent Sub-Databases for Concurrency
------ ------ ------ ------ ------ ------
\ M1 / \ M2 / \ M3 / \ M4 / \ M5 / \ M6 /
\ / \ / \ / \ / \ / \ /
\/ \/ \/ \/ \/ \/
. . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
-------- -------- -------- -------- -------- --------
\ D1 / \ D2 / \ D3 / \ D4 / \ D5 / \ D6 /
\ / \ / \ / \ / \ / \ /
---- ---- ---- ---- ---- ----