BATCH-SQL

Gültig für

Replicat

Beschreibung

Verwenden Sie den Parameter BATCHSQL, um die Performance von Replicat zu erhöhen. BATCHSQL veranlasst Replicat, ähnliche SQL-Anweisungen in Arrays zu organisieren und sie mit einer beschleunigten Rate anzuwenden. Im normalen Modus wendet Replicat jeweils eine SQL-Anweisung an.

BATCHSQL ist gültig für:

Wann BATCHSQL verwendet werden soll

Bevor Sie BATCHSQL verwenden, verwenden Sie paralleles Replicat, und prüfen Sie, ob dadurch ein Replicat-Lag gemildert wird. Falls dies nicht der Fall ist, aktivieren Sie BATCHSQL. Wenn Sie BATCHSQL aktivieren, wird die Performance verbessert, andernfalls aktiviert, deaktiviert und andere alternative Optimierungsübungen für das Replicat in Betracht gezogen. So stellen Sie sicher, dass alle Tabellen über Primär- oder eindeutige Schlüssel, begrenzte große Batchvorgänge und sicherstellen, dass paralleles Replicat viel Speicher und I/O für optimale Performance hat. Dies bedeutet, dass das Replicat nicht an I/O gebunden oder speichergebunden ist.

Wenn sich Replicat im BATCHSQL-Modus befindet, zeigen kleinere Zeilenänderungen eine höhere Performancesteigerung als größere Zeilenänderungen. Bei einer Datenänderung von 100 Byte pro Zeile konnte BATCHSQL die Performance von Replicat um bis zu 300 Prozent verbessern. Die tatsächlichen Performancevorteile variieren jedoch je nach Betriebsmix. Mit etwa 5.000 Byte Daten pro Zeile ändern sich die Vorteile der Verwendung von BATCHSQL.

Verwendungseinschränkungen

Zu den SQL-Anweisungen, die als Ausnahmen behandelt werden, gehören:

Wenn Replicat im Batch-Modus auf Ausnahmen stößt, rollt es den Batch-Vorgang zurück und versucht dann, die Ausnahmen auf folgende Weise anzuwenden, wobei die Transaktionsintegrität stets gewahrt wird:

Wenn die Verarbeitung von Ausnahmen abgeschlossen ist, wird der BATCHSQL-Modus von Replicat fortgesetzt.

Tabelle 9: Replikationsmodi

Quelltransaktionen (vorausgesetzt, dieselbe Tabellen- und Spaltenliste) Replicat-Transaktion im normalen Modus Replicat-Transaktion im BATCHSQL-Modus Replicat-Transaktionen im Quellmodus

Transaktion 1:

`EINFÜGEN`

`LÖSCHEN`

Transaction2:

`EINFÜGEN`

`LÖSCHEN`

Transaktion 3:

`EINFÜGEN`

`LÖSCHEN`

`EINFÜGEN`

`LÖSCHEN`

`EINFÜGEN`

`LÖSCHEN`

`EINFÜGEN`

`LÖSCHEN`

`EINFÜGEN` (x3)

`LÖSCHEN` (x3)

Transaktion 1:

`EINFÜGEN`

`LÖSCHEN`

Transaktion 2:

`EINFÜGEN`

`LÖSCHEN`

Transaktion 3:

`EINFÜGEN`

`LÖSCHEN`

Funktionsweise von BATCHSQL

Im BATCHSQL-Modus organisiert Replicat ähnliche SQL-Anweisungen in Batches innerhalb einer Speicherqueue und wendet dann jeden Batch in einem Datenbankvorgang an. Ein Batch enthält SQL-Anweisungen, die sich auf dieselbe Tabelle, denselben Vorgangstyp (Einfügen, Aktualisieren oder Löschen) und dieselbe Spaltenliste auswirken. Beispiel: Jeder der folgenden Elemente ist ein Batch:

Anzahl gecachte Anweisungen steuern

Der Parameter MAXSQLSTATEMENTS steuert die Anzahl der Anweisungen, die gecacht werden. Weitere Informationen finden Sie unter "MAXSQLSTATEMENTS". Alte Anweisungen werden mit einem am wenigsten verwendeten Algorithmus wiederverwendet. Die Batches werden basierend auf einem angegebenen Schwellenwert ausgeführt (siehe).

Standard

Deaktiviert (im normalen Replicat-Modus verarbeiten)

Syntax

BATCHSQL
[CHECKUNIQUEKEYS | NOCHECKUNIQUEKEYS]
[THREADS (<threadID>[, <threadID>][, ...][, <thread_range> [,<thread_range>][, ...])]
[CHECKUNIQUEKEYS NOCHECKUNIQUEKEYS]

Gültig für Replicat.

CHECKUNIQUEKEYS erzwingt einen Flush, wenn eine Tabelle mit einem eindeutigen Schlüssel gefunden wird, der die BATCHSQL-Verarbeitung umgeht. Dadurch wird sichergestellt, dass die ursprüngliche Reihenfolge der Vorgänge beibehalten wird, wenn sich der eindeutige Schlüssel ändert.

Der Standardwert ist NOCHECKUNIQUEKEYS und erzwingt keinen Löschvorgang, wenn eine Tabelle mit eindeutigen Schlüsseln ermittelt wird, mit der die Verarbeitung von BATCHSQL fortgesetzt werden kann.

THREADS (<threadID>[, <threadID>][, ...][, <thread_range>[, <thread_range>][, ...])

Gültig für BATCHESPERQUEUE, BATCHTRANSOPS und BYTESPERQUEUE. Wendet diese Optionen auf den bzw. die Threads eines koordinierten Replicats an.

<threadID>[, <threadID>][, ...]

Gibt eine Thread-ID oder eine kommagetrennte Liste mit Threads im Format threadID, threadID, threadID an.

[, <thread_range>[, <thread_range>][, ...]

Gibt einen Threadbereich in Form von threadIDlow-threadIDhigh oder einer durch Komma getrennten Liste von Bereichen im Format von threadIDlow-threadIDhigh, threadIDlow-threadIDhigh an.

Eine Kombination aus diesen Formaten ist zulässig, wie threadID, threadID, threadIDlow-threadIDhigh.