Ajuste de Transacciones de Replicat

Replicat utiliza SQL normal, por lo que su rendimiento depende del rendimiento de la base de datos destino y del tipo de SQL que se está aplicando (inserciones, frente a actualizaciones o supresiones). Sin embargo, puede tomar ciertos pasos para maximizar la eficiencia de Replicat.

Ajuste del rendimiento de coordinación frente a transacciones de barrera

En una configuración coordinada de Replicat, las transacciones de barrera, como las actualizaciones de la clave primaria, provocan un mayor número de confirmaciones en la base de datos y interrumpen la ventaja de la función GROUPTRANSOPS de Replicat. Cuando hay un gran número de transacciones de barrera en la carga de trabajo general de Replicat coordinado, el uso de un gran número de threads puede realmente degradar el rendimiento de Replicat.

Para mantener un alto rendimiento cuando se espera un gran número de transacciones de barrera, puede hacer lo siguiente:

Prevención de exploraciones de tabla completas en ausencia de claves

Si una tabla de destino no tiene una clave primaria, una clave única o un índice único, Replicat utiliza todas las columnas para crear su cláusula WHERE. Se trata, esencialmente, de una exploración de tabla completa.

Para que la selección de filas sea más eficaz, utilice una cláusula KEYCOLS en las sentencias TABLE y MAP para identificar una o más columnas como únicas. Replicat utilizará las columnas especificadas como clave. En el siguiente ejemplo se muestra una cláusula KEYCOLS en una sentencia TABLE:

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

Para obtener directrices de uso y sintaxis, consulte los parámetros TABLE y MAP en Referencia de parámetros y funciones para Oracle GoldenGate.

División de transacciones grandes

Si la base de datos destino no puede manejar transacciones grandes de la base de datos origen, puede dividirlas en una serie de transacciones más pequeñas mediante el parámetro Replicat MAXTRANSOPS. Consulte Referencia de parámetros y funciones para Oracle GoldenGate para obtener más información.

Nota: MAXTRANSOPS no es válido para un Replicat integrado en un sistema Oracle AI Database.

Ajuste de cursores abiertos

El proceso Replicat mantiene cursores para sentencias SQL almacenadas en caché y para operaciones SQLEXEC. Sin suficientes cursores, Replicat debe envejecer más sentencias. Por defecto, Replicat mantiene tantos cursores como permite el parámetro MAXSQLSTATEMENTS . Es posible que tenga que aumentar el valor de este parámetro. Si es así, puede que también necesite ajustar el número máximo de cursores abiertos permitidos por la base de datos. Consulte Referencia de parámetros y funciones para Oracle GoldenGate para obtener más información.

Mejora de la velocidad de actualización

Una fragmentación excesiva de bloques hace que Replicat aplique sentencias SQL a una velocidad más lenta de lo normal. Reorganice las tablas muy fragmentadas y, a continuación, pare e inicie Replicat para registrar el nuevo ID de objeto.

Definir un timeout de transacción de replicación

Utilice el parámetro TRANSACTIONTIMEOUT para evitar que una transacción de destino de Replicat sin confirmar retenga bloqueos en la base de datos de destino y consuma sus recursos innecesariamente. Puede cambiar el valor de este parámetro para que Replicat pueda trabajar dentro de los timeouts de la aplicación existentes y otros requisitos de la base de datos en el destino.

TRANSACTIONTIMEOUT limita la cantidad de tiempo que Replicat puede mantener abierta una transacción de destino si no ha recibido el registro de fin de transacción para la última transacción de origen de esa transacción. Por defecto, Replicat agrupa varias transacciones de origen en una transacción de destino para mejorar el rendimiento, pero no confirmará una transacción de origen parcial y esperará indefinidamente para ese último registro. El parámetro Replicat GROUPTRANSOPS controla el tamaño mínimo de una transacción de destino agrupada.

Los siguientes eventos pueden durar el tiempo suficiente para disparar TRANSACTIONTIMEOUT:

Consulte TRANSACTIONTIMEOUT en Referencia de parámetros y funciones para Oracle GoldenGate para obtener más información.