Transactions are started with a BEGIN WORK statement, but the command does
not need to be explicitly issued by the user. ALLBASE/SQL will automatically
issue a BEGIN WORK statement if another SQL statement is executed and a
transaction has not already been started.
Issuing explicit BEGIN WORK statements is good programming
practice, and is one way to specify a value other than the default for the
isolation level or the priority of the transaction (these attributes will be
explained later in this module).
A transaction that has been started but has not been terminated is known as
an active transaction.
ALLBASE/SQL assigns a unique id for each active transaction.
SYSTEM.TRANSACTION is a pseudo-table that displays all active transactions in
the DBEnvironment. It includes the name of the user who started the
transaction, the transaction id, and the priority of the transaction.
Max Transactions is a parameter in the DBECON file that limits the number
of concurrent, active transactions in the DBEnvironment. This parameter can
be specified in the START DBE statement, or by using the SQLUTIL ALTDBE
command. The default value is 2. Two times the number of concurrent users is
a good setting for Max Transactions.
A transaction that is started after the transaction limit has been reached is
placed onto a wait queue called the throttle wait list, and is known as a
throttled transaction. A throttled transaction must wait until one of the
active transactions terminates or its own timeout limit is reached. All
throttled transactions in the DBEnvironment can be identifed by issuing the
following query from ISQL:
SELECT * FROM SYSTEM.CALL WHERE STATUS = 'Waiting - SERVER';
NOTE:
The case is very important in the above command. Enter it exactly as shown.