The central dispatcher finds entries in the DBQueue (DialogDBQueue table) and moves the tasks into the QBMDBQueueCurrent table with the assignment tasks per slot.
Example of entries in the DialogDBQueue and QBMDBQueueCurrent tables
Table 194: Entries in the DialogDBQueue (extract) table
OrgRoot |
A |
OrgRoot |
B |
ADSAccountInADSGroup |
X |
ADSAccountInADSGroup |
Y |
ADSAccountInADSGroup |
Z |
Table 195: Entries in the QBMDBQueueCurrent (extract) table
001 |
OrgRoot |
A |
001 |
OrgRoot |
B |
002 |
ADSAccountInADSGroup |
X |
002 |
ADSAccountInADSGroup |
Y |
002 |
ADSAccountInADSGroup |
Z |
Each process processes tasks queued for its own slot in the QBMDBQueueCurrent table. Subsequent tasks resulting from processing are queued in the DialogDBQueue table.
If a process has processed its tasks and no other tasks are pending, the slot number in the QBMDBQueueCurrent table is set to 0 by the process itself. The entry initially remains in the QBMDBQueueCurrent table but is no longer taken into account (because slot 0 is not active).
The QBM_PDBQueueProcess_Del on <database> database schedule deletes all entries with slot number 0 from the QBMDBQueueCurrent table at regular intervals.
Table 196: Meaning of slot numbers in the QBMDBQueueCurrent table
001 - n |
Number of slot to be processed by the task. |
0 |
State after the task is completed correctly. |
-1 |
An error occurred during task processing or processing was deferred, for example, because synchronization is running. The central dispatcher re-enables the task. |
-2 |
An error occurred during task processing or processing was deferred, for example, because of blocking. The central dispatcher re-enables the task. |
-3 |
An error occurred during task processing or processing was deferred, for example, because there are still entries in the Job queue. The central dispatcher re-enables the task. |
Using the DBQueue buffer
To prevent blockages when processing DBQueue tasks by lengthy actions, for example, synchronization, a DBQueue buffer (QBMDBQueuePond table) is used. Synchronization initially writes DBQueue Processor tasks to the QBMDBQueuePond table. After synchronization is complete, the task are moved from the QBMDBQueuePond table to the DialogDBQueue table.
If a lengthy task does not queue anymore entries in the DBQueue tasks because, for example, synchronization did not end correctly, the remaining entries in the QBMDBQueuePond table are moved to the .DialogDBQueue table. The time period for this is defined in the QBM | DBQueue | BufferTimeout configuration parameter (default: 120 minutes). The transfer is carried out by the daily maintenance tasks.
Related topics
If a task has to be deferred, for example, due to a processing error or if a synchronization is currently running, then the slot number in the QBMDBQueueCurrent table is set by the process itself to -1. These tasks are re-enabled if there are no more tasks in the DBQueue. At the very latest, these deferred tasks are reinstated into the DBQueue the next time the central dispatcher runs. This means deferred tasks are re-enabled at the latest once the maximum runtime has elapsed.
NOTE: Deferring DBQueue tasks is recorded in the system journal.
Table 197: Configuration parameter for bulk processing in the DBQueue Processor
QBM | DBQueue | DefaultRuntime |
The configuration parameter species how the length of the DBQueue Processor run. The default value is 90 seconds. |
QBM | DBQueue | ChangeLimitMin |
The configuration parameter defines the lower limit for modifications (insert, change, or delete) within a single operation. The default value is 3000. |
QBM | DBQueue | ChangeLimitMax |
The configuration parameter defines the upper limit for modifications (insert, change, or delete) within a single operation. The default value is 50000. |
Some DBQueue Processor procedures are marked for bulk processing to reduce the total time required for processing DBQueue tasks. If a lot of entries are marked for bulk processing in the DBQueue, the DBQueue Processor switches from single to bulk processing.
There is a mechanism implemented that is used to decide whether switching to bulk processing as opposed to single processing would result in time savings. To do this, 25 single task processes are run and the processing time is recorded. All other entries for the task are processed in bulk and the minimum and maximum load time required for advantageous bulk processing is defined. A self optimizing calculation procedure updates the load times. Use of this method means that the DBQueue Processor must first stabilize, especially after an initial schema installation or after system modifications such as memory expansion in the database server. You can use the QBM | DBQueue | DefaultRuntime configuration parameter to specify the length of the DBQueue Processor run. The default value is 90 seconds. This corresponds to the time period that achieves the best load for the calculation procedure.
To prevent overloading when there is large amount of data, you can define limits for the result set. Control is realized using the QBM | DBQueue | ChangeLimitMin and QBM | DBQueue | ChangeLimitMax configuration parameters.
The QBMDBQueueSlot table is responsible for communication of the central dispatcher with individual slots. The maximum number of slots available is determined during initializing of the DBQueue Processor. One entry per slot is created in the QBMDBQueueSlot table. The table contains information about each slot and its status as well as currently running tasks.
Table 198: Meaning of status in the QBMDBQueueSlot table
0 |
No activity required. Initial state (set by initializing) or end state (set by process). |
1 |
The process is triggered to prepared central temporary tables, for example. |
2 |
Ready for operation. The process has started but the currently no tasks exist. This is the state in which tasks can be queued. |
3 |
Transfer to the QBMDBQueueCurrent table. The process has received tasks for processing and needs to begin. |
4 |
The process has recognized the tasks and added them. |
5 |
The process is handling the tasks. |
-1 |
The process was prompted to quit. Stop behavior if the process timed out or errors occurred. |
Related topics