¿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.

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.

Las cestas nos ayudan

En muchas ocasiones las transacciones se realizan sobre una lista de miles o millones de registros a procesar. En esos casos podemos meter en una cesta todos los registros a procesar e ir cortando bloques de registros que pasaremos al proceso en 3º plano para que los procese. Y así, sucesivamente hasta terminar con todos los registros.

results matching ""

    No results matching ""