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
- 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".
![](../images/stagingtranbatchrel.gif)
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".
- 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.
- Localice la línea de código siguiente:
${JAVA_EXE?} ... -Dwclogdir=$WCLOGDIR ... com.ibm.commerce.staging.StagingProp $* $DEFAULTLOG $DBTYPE
- 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.
-Xss<n>
. Por ejemplo, una especificación de -Xss1280k
ajusta el tamaño de pila JVM reservado a 1.25 megabytes.-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.-Xmx3072m
-Xss1280k