Transazioni replica tuning

Replicat utilizza SQL normale, quindi le sue prestazioni dipendono dalle prestazioni del database di destinazione e dal tipo di SQL applicato (inserisce, rispetto ad aggiornamenti o cancellazioni). Tuttavia, è possibile adottare alcune misure per massimizzare l'efficienza di Replicat.

Prestazioni coordinamento ottimizzazione rispetto a transazioni barriera

In una configurazione Replicat coordinata, le transazioni di barriera come gli aggiornamenti alla chiave primaria causano un numero maggiore di commit nel database e interrompono i vantaggi della funzione GROUPTRANSOPS di Replicat. Quando il carico di lavoro complessivo di Replicat coordinato prevede un numero elevato di transazioni di barriera, l'uso di un numero elevato di thread può effettivamente ridurre le prestazioni di Replicat.

Per mantenere prestazioni elevate quando è previsto un numero elevato di transazioni barriera, è possibile effettuare le operazioni riportate di seguito.

Prevenzione delle scansioni di tabelle complete in assenza di chiavi

Se una tabella di destinazione non dispone di una chiave primaria, una chiave univoca o un indice univoco, Replicat utilizza tutte le colonne per creare la clausola WHERE. Si tratta essenzialmente di una scansione completa della tabella.

Per rendere più efficiente la selezione delle righe, utilizzare una clausola KEYCOLS nelle istruzioni TABLE e MAP per identificare una o più colonne come univoche. Replicat utilizzerà le colonne specificate come chiave. L'esempio seguente mostra una clausola KEYCOLS in un'istruzione TABLE:

TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);

Per istruzioni sull'uso e la sintassi, vedere i parametri TABLE e MAP in Riferimento parametri e funzioni per Oracle GoldenGate.

Frazionamento di transazioni di grandi dimensioni

Se il database di destinazione non è in grado di gestire transazioni di grandi dimensioni dal database di origine, è possibile suddividerle in una serie di transazioni più piccole utilizzando il parametro Replicat MAXTRANSOPS. Per ulteriori informazioni, vedere Riferimento su parametri e funzioni per Oracle GoldenGate.

Nota: MAXTRANSOPS non è valido per un Replicat integrato in un sistema Oracle AI Database.

Adeguamento dei cursori aperti

Il processo Replicat gestisce i cursori per le istruzioni SQL inserite nella cache e per le operazioni SQLEXEC. Senza un numero sufficiente di cursori, Replicat deve invecchiare più istruzioni. Per impostazione predefinita, Replicat mantiene tutti i cursori consentiti dal parametro MAXSQLSTATEMENTS . È possibile che il valore di questo parametro debba essere aumentato. In tal caso, potrebbe essere necessario regolare anche il numero massimo di cursori aperti consentiti dal database. Per ulteriori informazioni, vedere Riferimento su parametri e funzioni per Oracle GoldenGate.

Miglioramento della velocità di aggiornamento

Un'eccessiva frammentazione dei blocchi fa sì che Replicat applichi le istruzioni SQL a una velocità inferiore al normale. Riorganizza le tabelle fortemente frammentate, quindi arresta e avvia Replicat per registrare il nuovo ID oggetto.

Imposta un timeout transazione Replicat

Utilizzare il parametro TRANSACTIONTIMEOUT per impedire che una transazione di destinazione Replicat di cui non è stato eseguito il commit blocchi nel database di destinazione e utilizzi inutilmente le relative risorse. È possibile modificare il valore di questo parametro in modo che Replicat possa funzionare nei timeout dell'applicazione esistenti e in altri requisiti del database sulla destinazione.

TRANSACTIONTIMEOUT limita il periodo di tempo durante il quale Replicat può mantenere aperta una transazione target se non ha ricevuto il record di fine transazione per l'ultima transazione di origine in tale transazione. Per impostazione predefinita, Replicat raggruppa più transazioni di origine in una transazione target per migliorare le prestazioni, ma non eseguirà il commit di una transazione di origine parziale e attenderà all'infinito l'ultimo record. Il parametro Replicat GROUPTRANSOPS controlla la dimensione minima di una transazione di destinazione raggruppata.

Gli eventi seguenti potrebbero durare abbastanza a lungo da attivare TRANSACTIONTIMEOUT:

Per ulteriori informazioni, vedere TRANSACTIONTIMEOUT in Riferimento su parametri e funzioni per Oracle GoldenGate.