TurboIMAGE/XL Database Management System Reference Manual MPE/iX V6.5 (30391-90011)
482 Chapter10
Internal Structures and Techniques
Run-Time TurboIMAGE/XL Control Blocks
account as the database.
NOTE
If you have an existing file with the same name that TurboIMAGE/XL would
assign to the permanent mapped file (that is, dbnameGB), you will get the
following message for status code −9:
CANNOT CREATE DBG : MPE ERROR <
nnn
>
The DBG is derived mostly from the root file and contains global information required by
TurboIMAGE/XL intrinsics during run-time. In addition, the DBG contains the lock table
which holds user-level locking information. The DBG is used as a reference area for global
data and lock information.
The DBB is used to retrieve, log, and update data located within the data sets. It contains
a set of buffer headers which are shared by all concurrent users accessing the database.
These buffer headers contain information about data set blocks. The DBB also contains
information pertaining to logging and recovery.
A two-level resource priority locking scheme is used within the DBB to allow single data
block operations to access the control block concurrently. This involves DBGET, DBFIND and
DBUPDATE processes. DBPUT and DBDELETE operations, and DBUPDATE operations on detail
data set search or sort items made possible through the critical item update (CIUPDATE)
option, are unable to access the data blocks concurrently with other DBPUTs, DBDELETEs,
and search or sort item DBUPDATEs. These block put-delete lock operations must hold a
global lock on the DBB throughout part of the operation; therefore, there is less
concurrency when using DBPUT and DBDELETE and when using DBUPDATE on search or sort
items via the CIUPDATE option. When you update a search or sort item value, you get the
same net effect as performing a DBDELETE and DBPUT.
One DBU is created and stored in a privileged, unnamed temporary file each time a user
issues a DBOPEN, and remains allocated until the corresponding DBCLOSE is issued. The
DBU contains information pertaining to the user's individual access to the database. This
includes information about the user's access mode, record position, list specifications, and
security table. All TurboIMAGE/XL intrinsics process on the DBU, except accesses for
global and buffer area information found in the DBG and DBB.
The DBUX is created and stored in a privileged, unnamed temporary file the first time the
user's process calls DBOPEN. One DBUX exists for each process. Its purpose is to keep track
of the addresses of all the DBUs belonging to that process. Because 127 entries are allowed
in the DBUX, each process is allowed a maximum of 127 DBOPENs (63 per database)
depending on the availability of system resources. The DBUX remains allocated until the
user's process is terminated.
When accessing a local database, the TurboIMAGE/XL procedures usually make use of,
and can modify information in all of the control blocks.
The TURBOLKT is a permanent file, TURBOLKT.PUB.SYS, that is created by DBOPEN (if it does
not exist beforehand). Thereafter, it is opened when the first user opens any database on
the system. It is purged when the system is rebooted. Each system has only one TURBOLKT
file. It is used to avoid deadlocks for all IMAGE/SQL users. Additionally, it is also used to
detect potential deadlock for TurboIMAGE/XL users if, and only if, deadlock detection is
activated by DBCONTROL mode 7.