¿Cómo optimizar transacciones grandes?
Cuidado con el TRN
El servidor de Velneo realiza un gestión segura de las transacciones que procesa. En ese proceso guarda las operaciones en el fichero con extensión ".trn" que se encuentra en el subdirectorio "trn" del servidor.
En ese fichero se van añadiendo las operaciones de las transacciones en curso, en el momento en que no hay ninguna transacción activa el servidor se encarga de eliminar este fichero. Por ese motivo lo más habitual es que cuando miras ese directorio o no hay ningún fichero o existe un fichero de pequeño tamaño.
Esa misma información también se genera en memoria, de esta forma el servidor es más ágil, pero debemos tener en cuenta que la memoria que consume la ejecución de un proceso tiene relación con el tamaño en disco de la transacción. Si es grande, también será grande el consumo de memoria.
Si ejecutamos un transacción muy larga lo que conseguimos es que este fichero crezca mucho de tamaño y que el resto de transacciones finalizadas no se puedan limpiar.
Como cualquier fichero del sistema, cuando mayor sea su tamaño peor rendimiento tendrá su gestión a la hora de añadir nuevo contenido.
Divide y vencerás
La solución para optimizar las grandes transacciones es dividirlas en transacciones más pequeñas.
Debemos buscar el punto óptimo de ejecución, es decir, si una única transacción grande se acaba volviendo muy lenta porque puede saturar la memoria del servidor, millones de transacciones de una operación también es una mala solución.
Hay que tener en cuenta que abrir y cerrar una transacción requiere tiempo al servidor, por ese motivo debemos intentar que en cada transacción se realicen varios miles de operaciones. Otro aspecto a tener en cuenta en el crecimiento del fichero ".trn" es el tamaño de los registros que estamos transaccionando, ya que ocupan más 1.000 operaciones de una tabla de 1.000 bytes de tamaño registro que 10.000 operaciones de un tamaño de registro de 40 bytes.
Por ejemplo, procesar una transacción de 1.000.000 de operaciones puede ser interesante dividirla en 50 transacción de 20.000 registros.
La solución es el uso del comando de instrucción de proceso Multipartir lista por nº de registros. Este comando permite dividir una lista en sub-listas de n registros.
Veamos un pequeño ejemplo: se trata de un proceso de lista en el que iremos procesando la lista de 50 en 50 registros. Aclara que este número de registros a procesar ha sido establecido al azar, dependerá del tamaño de las transacciones el número óptimo a procesar en cada caso.
Última actualización