The BEGIN or ALLOCATED transaction state is the first state a transaction will enter (depending on the Progress/OpenEdge version, that is because the "WORD" used to designate the "initial instantiation" of a transaction was changed).
A transaction number is assigned the moment a Lock (X, XL) is requested by the query, even without an update, create or delete statement being called. At this point in time there is no transaction started, which is why the Transaction Duration Time (_trans-duration) displays as unknown even though a transaction number and lock has been assigned.
The
transaction duration counter starts only when a CREATE, UPDATE or DELETE statement is issued. At this point, the
transaction state changes to
ACTIVE.
Note, that if a CREATE, UPDATE or DELETE statement in a transaction is held in a 'pause' state for some reason and it is the first in a transaction, this
transaction state will not change to
ACTIVE and the
transaction duration counter will remain as unknown (?) because this transaction effectively has not been committed yet. Once the 'pause' has expired, this transaction becomes active and the
transaction duration counter starts.
If a WAIT statement is inserted, the process does not complete until the wait is satisfied. The transaction duration counter will continue to accumulate until the the wait time ends and the process is able to complete. This would also trigger bi growth, as the WAIT state has locked the bi-cluster where the ACTIVE transaction initiated.
Refer to Article
000022353 for further discussion of the
BEGIN or
ALLOCATED transaction state.