BATCHQL

Valido per

Replicat

Descrizione

Utilizzare il parametro BATCHSQL per aumentare le prestazioni di Replicat. BATCHSQL consente a Replicat di organizzare istruzioni SQL simili in array e di applicarle a una velocità accelerata. Nella modalità normale Replicat applica un'istruzione SQL alla volta.

BATCHSQL è valido per:

Quando utilizzare BATCHSQL

Prima di utilizzare BATCHSQL, utilizzare Replicat parallelo e verificare se riduce il ritardo Replicat. In caso contrario, provare ad abilitare BATCHSQL. Se l'abilitazione di BATCHSQL migliora le prestazioni, mantenerla abilitata altrimenti, disabilitarla e prendere in considerazione altri esercizi di tuning alternativi per Replicat, ad esempio assicurando che tutte le tabelle dispongano di chiavi primarie o univoche, limitate operazioni batch di grandi dimensioni e assicurando che Replicat parallelo disponga di molta memoria e I/O per prestazioni ottimali, il che significa che Replicat non è associato a un limite di I/O o a una memoria associata.

Quando Replicat è in modalità BATCHSQL, le modifiche di riga più piccole mostrano un aumento delle prestazioni maggiore rispetto alle modifiche di riga più grandi. Con una variazione di 100 byte di dati per riga, BATCHSQL è stato noto per migliorare le prestazioni di Replicat fino al 300%, ma i vantaggi effettivi delle prestazioni varieranno, a seconda del mix di operazioni. Con una variazione di circa 5.000 byte di dati per riga, i vantaggi dell'uso di BATCHSQL diminuiscono.

Restrizioni utilizzo

Le istruzioni SQL trattate come eccezioni includono:

Quando Replicat rileva eccezioni in modalità batch, esegue il rollback dell'operazione batch e quindi tenta di applicare le eccezioni nei modi seguenti, mantenendo sempre l'integrità delle transazioni:

Al termine dell'elaborazione delle eccezioni, Replicat riprende la modalità BATCHSQL.

Modalità Replicat tabella 9

Transazioni di origine (assume lo stesso elenco di tabelle e colonne) Transazione Replicat in modalità normale Transazione Replicat in modalità BATCHSQL Replicat transazioni in modalità di origine

Transazione 1:

`INSERT`

`ELIMINAZIONE`

Transaction2:

`INSERT`

`ELIMINAZIONE`

Transazione 3:

`INSERT`

`ELIMINAZIONE`

`INSERISCI`

`ELIMINAZIONE`

`INSERT`

`ELIMINAZIONE`

`INSERT`

`ELIMINAZIONE`

`INSERT` (x3)

`ELIMINA` (x3)

Transazione 1:

`INSERISCI`

`ELIMINAZIONE`

Transazione 2:

`INSERT`

`ELIMINAZIONE`

Transazione 3:

`INSERT`

`ELIMINAZIONE`

Funzionamento di BATCHSQL

In modalità BATCHSQL, Replicat organizza istruzioni SQL simili in batch all'interno di una coda di memoria e quindi applica ogni batch in un'operazione di database. Un batch contiene istruzioni SQL che interessano la stessa tabella, lo stesso tipo di operazione (inserire, aggiornare o eliminare) e la stessa lista di colonne. Ad esempio, ognuno dei seguenti è un batch:

Controllo del numero di istruzioni inserite nella cache

Il parametro MAXSQLSTATEMENTS controlla il numero di istruzioni inserite nella cache. Per ulteriori informazioni, vedere "MAXSQLSTATEMENTS". Le vecchie dichiarazioni vengono riciclate utilizzando un algoritmo utilizzato meno di recente. I batch vengono eseguiti in base a una soglia specificata (vedere).

Predefinito

Disabilitato (elaborazione in modalità Replicat normale)

Sintassi

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

Valido per Replicat.

CHECKUNIQUEKEYS forza un flush quando si incontra una tabella con una chiave univoca che ignora l'elaborazione BATCHSQL. Ciò garantisce che l'ordine originale delle operazioni venga mantenuto se la chiave univoca cambia.

Il valore predefinito è NOCHECKUNIQUEKEYS e non forza un flush quando viene rilevata una tabella con chiavi univoche che consente di continuare l'elaborazione BATCHSQL.

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

Valido per BATCHESPERQUEUE, BATCHTRANSOPS e BYTESPERQUEUE. Applica queste opzioni al thread o ai thread specificati di un Replicat coordinato.

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

Specifica un thread ID o una lista separata da virgole di thread nel formato threadID, threadID, threadID.

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

Specifica un intervallo di thread in formato threadIDlow-threadIDhigh o una lista di intervalli separata da virgole nel formatothreadIDlow-threadIDhigh, threadIDlow-threadIDhigh.

La combinazione di questi formati, ad esempio threadID, threadID, threadIDlow-threadIDhigh, è consentita.