Controlling long transactions
- Adjust the long-transaction high-watermark setting
- Adjust the exclusive access, long-transaction high-watermark setting
- Adjust the size of log files
- Set limits on logspace available to individual transactions
- Set limits on the amount of time a transaction can run
The database server
uses the LTXHWM and LTXEHWM configuration parameters to set high-watermarks
for long transactions. If DYNAMIC_LOGS is set to 1
or 2
,
the default LTXHWM value is 80 percent and LTXEHWM is 90 percent.
If DYNAMIC_LOGS is set to 0
, the default LTXHWM value
is 50 percent and the default LTXHEWM value is 60 percent.
If you decrease your high-watermark values, you increase the likelihood of long transactions. To compensate, allocate additional log space.
Long-transaction high-watermark (LTXHWM)
The long-transaction high-watermark is the percentage of total log space that a transaction is allowed to span before it is rolled back.
If the database server finds an open transaction in the oldest used log file, it dynamically adds log files. Because the log space is increasing, the high-watermark expands outward. When the log space reaches the high-watermark, the database server rolls back the transaction. The transaction rollback and other processes also generate logical-log records. The database server continues adding log files until the rollback is complete to prevent the logical log from running out of space. More than one transaction can be rolled back if more than one long transaction exists.
For example, the database server has 10 logical logs and LTXHWM is set to 98. A transaction begins in log file 1 and update activity fills logs 1 - 9. The database server dynamically adds log file 11 after log file 10. If the transaction does not complete, this process continues until the database server adds 40 log files. When the database server adds the 50th log, the transaction is caught up to the high-watermark and the database server rolls it back.
Exclusive access, long-transaction high-watermark (LTXEHWM)
Adjust the size of log files to prevent long transactions
Use larger log files when many users are writing to the logs at the same time. If you use small logs and long transactions are likely to occur, reduce the high-watermark. Set the LTXHWM value to 50
and the LTXEHWM value to 60
.
If the log files are too small, the database server might run out of log space while rolling back a long transaction. In this case, the database server cannot block fast enough to add a log file before the last one fills. If the last log file fills, the system hangs and displays an error message. To fix the problem, shut down and restart the database server.
Set limits on logspace available to transactions
The SESSION_LIMIT_LOGSPACE configuration parameter limits how much log space a session can use for each transaction, which prevents transactions above a specific size from occurring, and prevents large transactions from a single session from monopolizing system resources.
The database server terminates a transaction that exceeds the log space limit, and produces an error in the database server message log.
The size limit does not apply to a user who holds administrative privileges, such as user informix or a DBSA user.
Set limits on the amount of time a transaction can run
The SESSION_LIMIT_TXN_TIME configuration parameter limits how much time a transaction can run in a session, which prevents transactions that require a large amount of time from occurring, and prevents long transactions from a single session from monopolizing system resources.
The database server terminates a transaction that exceeds the time limit, and produces an error in the database server message log.
The time limit does not apply to a user who holds administrative privileges, such as user informix or a DBSA user.