Performance Considerations
Managing Contention
If two transactions , either standalone or across the cluster, attempt to perform a cache operation on the same element, the following rules apply:
- The first transaction gets access
- The following transactions block on the cache operation until either the first transaction completes or the transaction timeout occurs.
Note: When
an element is involved in a transaction, it is replaced with a new element
with a marker that is locked, along with the transaction ID.
The
normal cluster semantics are used. Because transactions only work
with consistency=strong caches, the first transaction is the thread
that manages to atomically place a soft lock on the element. (This is
done with the CAS based putIfAbsent and replace methods.)
What Granularity of Locking is Used?
BigMemory Maxuses soft locks stored in the Element itself and is on a key basis.
Performance Comparisons
Any transactional cache
adds an overhead, which is significant for writes and nearly negligible
for reads. Compared to transactionalMode="off"
,
the time it takes to perform writes will be noticeably slower with
either "xa" or "local" specified, and "xa_strict" will be the slowest.