bmap4j - Batch Management And Processing For Java

xinventa logo

Batch Transaction Processing Fundamentals - Performance

de

Performance

Parallelizing

Many times, parallelizing the program is necessary to achieve the required performance. For this process the complete batch is divided into slices, which are then processed in parallel. To allow the implementation of a parallel strategy, the records contained in each of those slices need to be independent from each other.

The parallelization has to go hand in hand with the scalability of appserver and backend systems (e.g. DB's) otherwise a bottleneck will be created, which slows down parallel running units, to result in no or just a little performance gains.

Commit Units

It is oftentimes not efficient to commit every single record by itself. But to commit all of the records of a job together in one transaction is usually not possible (refer robustness - All-or-Nothing-Strategy). In most cases an optimal number of records is then combined into a commit unit. This commit unit usually ideally coincides with the slice originating from the parallelization. The only thing left to do then, if any, is a coordination with the cache of the applied entity-managers.

Other aspects

Outside of the batch system scope various aspects influence the performance:

  • Application or data model design
  • Program code quality
  • Performance of database server, operating system or IO-subsystems

Also this aspects must be taken into account when optimizing the performance of a BTP system.