Der zentrale Dispatcher ermittelt die Einträge der DBQueue (Tabelle DialogDBQueue) und verschiebt die Aufträge in die Tabelle QBMDBQueueCurrent mit der Zuordnung Auftrag pro Slot.
Beispiel für Einträge in den Tabellen DialogDBQueue und QBMDBQueueCurrent
Tabelle 196: Einträge in Tabelle DialogDBQueue (Auszug)
OrgRoot |
A |
OrgRoot |
B |
ADSAccountInADSGroup |
X |
ADSAccountInADSGroup |
Y |
ADSAccountInADSGroup |
Z |
Tabelle 197: Einträge in Tabelle QBMDBQueueCurrent (Auszug)
001 |
OrgRoot |
A |
001 |
OrgRoot |
B |
002 |
ADSAccountInADSGroup |
X |
002 |
ADSAccountInADSGroup |
Y |
002 |
ADSAccountInADSGroup |
Z |
Jeder Prozess verarbeitet die Aufträge, die für seinen Slot in die Tabelle QBMDBQueueCurrent eingestellt werden. Folgeaufträge, die aus der Verarbeitung resultieren, werden in die Tabelle DialogDBQueue eingestellt.
Wenn ein Prozess seine Aufträge abgearbeitet hat und keine weiteren Aufträge anstehen, wird die Slotnummer in der Tabelle QBMDBQueueCurrent durch den Prozess selbst auf 0 gesetzt. Der Eintrag verbleibt zunächst in der Tabelle QBMDBQueueCurrent, wird jedoch nicht mehr beachtet (da Slot 0 kein aktiver Slot ist).
Der Datenbankschedule QBM_PDBQueueProcess_Del on <database> löscht in regelmäßigen Abständen alle Einträge mit Slotnummer 0 aus der Tabelle QBMDBQueueCurrent.
Tabelle 198: Bedeutung der Slotnummern in Tabelle QBMDBQueueCurrent
001 - n |
Nummer des Slots, in dem ein Auftrag zu verarbeiten ist. |
0 |
Zustand nach ordnungsgemäßer Erledigung des Auftrags. |
-1 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen laufender Synchronisation. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
-2 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen Blockierungen. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
-3 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen noch vorhandener Einträge in der Jobqueue. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
Nutzung des DBQueue Puffers
Um Blockaden bei der Verarbeitung der Aufträge in der DBQueue durch langlaufende Aktionen, wie beispielsweise Synchronisationen, zu verhindern, wird ein DBQueue Puffer (Tabelle QBMDBQueuePond) genutzt. Synchronisationen schreiben ihre DBQueue Prozessor Aufträge zunächst in die Tabelle QBMDBQueuePond. Nach Abschluss der Synchronisation werden die Einträge aus der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben.
Sollte eine langlaufende Aktion über einen definierten Zeitraum keine weiteren Einträge im DBQueue Puffer erzeugen, weil beispielsweise eine Synchronisation nicht korrekt beendet wurde, werden verbliebene Einträge der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben. Der Zeitraum ist im Konfigurationsparameter QBM | DBQueue | BufferTimeout festgelegt (Standard: 120 Minuten). Die Übernahme der Einträge erfolgt innerhalb der täglichen Wartungsaufträge.
Verwandte Themen
Wenn ein Auftrag zurückgestellt werden muss, beispielsweise bei einem Verarbeitungsfehler oder bei laufender Synchronisation, dann wird die Slotnummer in der Tabelle QBMDBQueueCurrent durch den Prozess selbst auf -1 gesetzt. Sind keine Aufträge in der DBQueue vorhanden, werden diese Aufträge reaktiviert. Spätestens beim nächsten Lauf des zentralen Dispatchers werden die zurückgestellten Aufträge wieder in die DBQueue eingestellt. Damit werden zurückgestellte Aufträge spätestens nach Ablauf der maximalen Laufzeit reaktiviert.
HINWEIS: Das Zurückstellen von DBQueue Aufträgen wird im Systemprotokoll aufgezeichnet.
Tabelle 199: Konfigurationsparameter für die Mengenverarbeitung im DBQueue Prozessor
QBM | DBQueue | DefaultRuntime |
Der Konfigurationsparameter legt fest, wie groß das Laufintervall des DBQueue Prozessors sein soll. Der Standardwert ist 90 Sekunden. |
QBM | DBQueue | ChangeLimitMin |
Der Konfigurationsparameter definiert den unteren Grenzwert für Änderungen (Einfügen, Ändern oder Löschen) innerhalb einer einzelnen Operation. Der Standardwert ist 3000. |
QBM | DBQueue | ChangeLimitMax |
Der Konfigurationsparameter definiert den oberen Grenzwert für Änderungen (Einfügen, Ändern oder Löschen) innerhalb einer einzelnen Operation. Der Standardwert ist 50000. |
Um die Gesamtzeit der Verarbeitung der DBQueue Aufträge zu reduzieren, sind einige der Prozeduren des DBQueue Prozessors für die Mengenverarbeitung gekennzeichnet. Sind mehrere Einträge für einen derart gekennzeichneten Auftrag in der DBQueue vorhanden, dann schaltet der DBQueue Prozessor von Einzelverarbeitung auf Mengenverarbeitung.
Es ist ein Mechanismus implementiert, anhand dessen entschieden wird, ob die Umstellung auf Mengenverarbeitung gegenüber der Einzelverarbeitung zu einer Zeitersparnis führen würde. Dazu werden zunächst 25 Einzelverarbeitungen eines Auftrages ausgeführt und die Verarbeitungszeiten ermittelt. Alle weiteren Einträge eines Auftrages, werden über Mengenverarbeitung abgearbeitet und die minimale und maximale Ladezeit für eine rentable Mengenverarbeitung bestimmt. Die Aktualisierung der Ladezeiten erfolgt durch ein selbstoptimierendes Berechnungsverfahren. Das eingesetzte Verfahren hat zur Folge, dass sich der DBQueue Prozessor erst einschwingen muss, insbesondere nach einer initialen Schemainstallation oder nach Systemänderungen wie beispielsweise Speicherzuwachs des Datenbankservers. Über den Konfigurationsparameter QBM | DBQueue | DefaultRuntime können Sie festlegen, wie groß das Laufintervall des DBQueue Prozessors sein soll. Der Standardwert ist 90 Sekunden. Dies entspricht dem Zeitraum, für den über das Berechnungsverfahren eine gute Auslastung erzielt wird.
Als Schutz vor Überladung bei zu großen Datenmengen können Grenzwerte für die zu bearbeitende Ergebnismenge definiert werden. Die Steuerung erfolgt über die Konfigurationsparameter QBM | DBQueue | ChangeLimitMin und QBM | DBQueue | ChangeLimitMax.
Die Kommunikation des zentralen Dispatchers mit den einzelnen Slots erfolgt über die Tabelle QBMDBQueueSlot. Die Anzahl der maximal verfügbaren Slots wird während der Initialisierung des DBQueue Prozessor ermittelt. Pro Slot wird ein Eintrag in der Tabelle QBMDBQueueSlot erzeugt. Die Tabelle enthält Informationen über die einzelnen Slots und deren Status sowie die momentan laufenden Aufträge.
Tabelle 200: Bedeutung des Status in Tabelle QBMDBQueueSlot
0 |
Keine Aktivität vorhanden. Initialzustand (gesetzt durch Initialisierung) oder Endzustand (gesetzt durch Prozess). |
1 |
Der Prozess wird zur Arbeit aufgefordert, beispielsweise zur Vorbereitung zentraler temporärer Tabellen. |
2 |
Betriebsbereit. Der Prozess hat die Arbeit aufgenommen, aber es sind momentan keine Aufträge vorhanden. Das ist der Zustand in dem Aufträge eingestellt werden können. |
3 |
Übergabe an die Tabelle QBMDBQueueCurrent. Der Prozess hat die Aufträge zur Verarbeitung bekommen und soll tätig werden. |
4 |
Der Prozess hat die Aufträge erkannt und übernommen. |
5 |
Der Prozess verarbeitet die Aufträge. |
-1 |
Der Prozess wurde zur Beendigung aufgefordert, Stopp-Verhalten nach maximaler Laufzeit oder Abbruch bei Prozessfehlern. |
Verwandte Themen