Concurrent transaction serialization and queueing, explicit transactions
An explicit transaction is one that is framed within a BEGIN statement. If the system reaches a limit of 63 concurrent read/write transactions, new transaction requests framed by a BEGIN statement queue until the concurrent transactions falls below 63, at which time data modification operations are permitted.
A read-only explicit transaction that issues only SELECT statements also queues unless a SET SESSION READ ONLY is executed in the session before the BEGIN statement.
The following table summarizes the differences in system response in queuing implicit and explicit transactions when the number of read/write transactions reaches 63. In the table, note the following symbol meanings.
- X = starts executing
- E = error message
- Q = request queues
| Implicit | Explicit begin_queue_if_full=T (default) | Explicit begin_queue_if_full=T set session read only | Explicit begin_queue_if_full=F | |
|---|---|---|---|---|
| BEGIN | Not applicable | Q | X (read only) | X (read only) |
| SELECT | X | X (after BEGIN proceeds) | X | X |
| CREATE | X | X | E | E |
| CREATE TABLE AS | X | X | E | E |
| DROP | X | X | E | E |
| TRUNCATE | X | X | E | E |
| INSERT | Q | X | E | E |
| DELETE | Q | X | E | E |
| UPDATE | Q | X | E | E |
| CREATE/MODIFY TEMPORARY TABLE | X | X | X | X |