Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Stardust/Knowledge Base/Performance Tuning/Write Behind

< Stardust‎ | Knowledge Base‎ | Performance Tuning
Revision as of 09:59, 11 November 2011 by Unnamed Poltroon (Talk) (Prerequisites)

Introduction

The Write Behind feature has been introduced for mainly STP-driven solutions characterized by high volume and throughput with the need for low latency. The basic idea around Write Behind is to write process run information as a batch asynchronously into the database, instead of doing it right away. Writing process run information synchronously creates a lot of contention on sequence retrieval and redo logs, which can’t be much reduced / optimized. Write Behind, however, dissolves such contention, since the number of database operations are optimized and reduced to a minimum. That way much more process instances can be completed within a given timeframe. Depending on complexitiy of the processes, multiple hundreds of process instances can be processed within a second. 

Prerequisites

There are two main preconditions that are important to keep in mind if process run information should be written asynchronously into the Audit Trail. Write Behind works if:

  1. A sequence-based database is used for the Audit Trail
  2. Processes can be completed from start to end within one transaction

The latter precondition is essential. If a process is not completed in one transaction, its current state will be written to the Audit Trail synchronously. A process cannot be completed in one transaction if:

  1. It includes a manual activity
  2. Sub-processes are invoked asynchronously
  3. Fork-On-Traversal flags have been defined explicitly
  4. JMS Request-/Response activities are used
  5. Activities are hibernated first after creation
  6. Processes define AND-Splits and/or AND-Joins
  7. Processes are triggered asynchronously

Back to the top