Mejora del rendimiento de stagingprop

El programa de utilidad stagingprop puede procesar grandes cantidades de datos.

Propagación de grandes cantidades de datos

Ajuste de los parámetros -transaction y -batchsize

Una clave para maximizar el rendimiento es procesar grandes cantidades de datos. A medida que crece el negocio, también crece la cantidad de datos que deben moverse de un entorno de autoría o transición a un entorno de producción. Para dar soporte al movimiento de datos de gran tamaño utilizando stagingprop, piense en utilizar tamaños grandes de transacciones y tamaños grandes de lotes al propagar los datos.
transacción
Especifica el recuento de registros para cada transacción. Este recuento de registros es el número de cambios que se propagan antes de emitir un compromiso en las bases de datos de producción y transición. Cada transacción puede incluir varios lotes, que se comprometen cuando se alcanza o supera el recuento de registros especificado. La lógica mejorada del programa de utilidad stagingprop se basa en que este valor sea grande, pero todavía dentro de los límites de ambas bases de datos para mover datos más rápidamente. Si no especifica un valor para este parámetro, los registros de cambios se comprometen como una sola transacción.
batchsize
Especifica el número de registros consolidados que se deben incluir en un lote. Similar al parámetro transaction; establezca un valor grande para este parámetro. Si establece el parámetro batchsize en un valor grande, puede almacenar en el almacenamiento intermedio grandes cantidades de datos de propagación en la JVM antes de enviar los datos a la base de datos de producción en un solo viaje. El valor predeterminado es "100".
Se recomienda utilizar ambos parámetros, transaction y batchsize, cuando sea necesario propagar grandes cantidades de datos.
Nota: Cuando se utilizan los dos parámetros, el recuento de registros que especifique para el parámetro transaction se puede superar dependiendo del valor establecido para el parámetro batchsize. Por ejemplo, si establece el valor del parámetro transaction en "10000" y los valores del parámetro batchsize en "3000", la relación entre los parámetros puede parecerse al siguiente diagrama.

Con esta relación, los cambios que se propagan a la base de datos de producción se comprometen cada 4 lotes. Los registros no se comprometen hasta que el cuarto lote está lleno. En este escenario, el número de registros comprometidos en cada transacción pueden ser 120000, incluso si el valor del parámetro transaction solo es "100000".
Al ajustar los parámetros batchsize y transaction, tenga en cuenta los siguientes valores recomendados:
  • Para un rendimiento óptimo, asegúrese de que el valor del parámetro transaction es un múltiplo del valor para el parámetro batchsize. La proporción recomendada del valor del parámetro batchsize y el valor del parámetro transaction es de 1:10. Por ejemplo, en el escenario del diagrama anterior, el valor del parámetro transaction es "100000". Para que el valor del parámetro batchsize utilice la proporción recomendada, el valor debe ser "1000". Sin embargo, si el valor del parámetro batchsize sigue siendo "3000", el valor del parámetro transaction debe ser "300000".
  • Para resolver los problemas de rendimiento generales, considere establecer valores más grandes para los dos parámetros. Los valores óptimos para las pruebas internas de IBM eran "100000" para el parámetro batchsize y "1000000" para el parámetro transaction. Si embargo, tenga en cuenta que cuanto mayor sea el tamaño del lote, mayor será el almacenamiento dinámico que es necesario para mantener las sentencias SQL en la memoria antes de que se produzca un compromiso. Puede que sea necesario ajustar el almacenamiento dinámico de la JVM al establecer un valor grande para el parámetro batchsize.
  • Si el programa de utilidad stagingprop tarda mucho tiempo en completar la propagación de datos, considere establecer los parámetros para procesar menos datos a la vez. Si propaga demasiados registros a la vez, considere la posibilidad de ejecutar el programa de utilidad a un intervalo más frecuente. Si aumenta la frecuencia con la que se propagan los datos puede comportar menor registros por propagación.
  • Para ayudar a resolver los problemas cuando el programa de utilidad stagingprop no puede propagar los datos, ajuste el valor del parámetro batchsize. Por ejemplo, si no establece un valor para este parámetro, el valor es "100", lo que puede dificultar que pueda encontrar los registros que causan errores. Si se establece el valor del parámetro en "0" puede desactivar el proceso por lotes de JDBC, lo que le ayudará a identificar los registros que están provocando un error.

Almacenamiento dinámico de ejecución de JVM

Puede aumentar las restricciones de las bases de datos de transición y producción para mejorar el rendimiento. No obstante, también es posible que deba ajustar las restricciones de la JVM. Al hacerlo, almacena en búfer grandes cantidades de datos en memoria mediante stagingprop y el controlador JDBC durante las fases de consolidación y propagación.

Puede aumentar la cantidad máxima del almacenamiento dinámico de tiempo de ejecución que la JVM puede utilizar. Especifique la combinación de argumento y valor de -Xmx<n> en la invocación de stagingprop en los archivos stagingprop.sh o stagingprop.bat.

En utilities_root/bin/stagingprop.sh:
  1. Localice la línea de código siguiente:
    ${JAVA_EXE?} ... -Dwclogdir=$WCLOGDIR ...  com.ibm.commerce.staging.StagingProp $* $DEFAULTLOG $DBTYPE
    
  2. Actualice esta línea de código para que sea el código siguiente:
    ${JAVA_EXE?} ... -Dwclogdir=$WCLOGDIR -Xmx3072m ... com.ibm.commerce.staging.StagingProp $* $DEFAULTLOG $DBTYPE

En los ejemplos anteriores, la cantidad máxima de almacenamiento dinámico de ejecución que puede utilizar la JVM durante la invocación de stagingprop ha aumentado a 3 gigabytes.

Si establece el parámetro -actionOnError, es posible que necesite ajustar el tamaño de la pila que ha reservado la JVM durante la invocación cuando se utilizan determinados controladores JDBC. Este ajuste se puede realizar de forma similar al almacenamiento dinámico de ejecución, pero utilizando la combinación de argumento y valor de -Xss<n>. Por ejemplo, una especificación de -Xss1280k ajusta el tamaño de pila JVM reservado a 1.25 megabytes.
Nota: Con este ajuste, si cambia los argumentos de la JVM, -Xmx y -Xss, asegúrese de que no se utiliza un valor que sea demasiado grande. Al hacerlo, desvía los recursos de la memoria que se pueden utilizar a otro lugar.
Como referencia, en las pruebas de datos de gran tamaño que se han realizado durante el desarrollo, se han utilizado los siguientes valores JVM:
  • -Xmx3072m
  • -Xss1280k
Si está realizando estos ajustes, puede utilizar 100000 como un valor posible para el parámetro -batchsize y 1000000 para el parámetro -transaction.