Version
4.3.9 or above
Explanation
Unable to execute an UPDATE statement.
Cause
This error occurs when the size of the redo log which is generated when executing an UPDATE statement exceeds TRX_UPDATE_MAX_LOGSIZE.
The size of the redo log generated when executing an UPDATE statement can be much bigger than the record.
Action
1. To fix this error, modify TRX_UPDATE_MAX_LOGSIZE with the following command:
2. Reduce the number of updates by using the LIMIT clause in the UPDATE statement and repeatedly execute smaller update operations.
For example, if there are 100,000 records to be updated, the LIMIT10000 clause repeatedly performs 10 update operations.
Reference
1. If TRX_UPDATE_MAX_LOGSIZE is set to a high value, memory usage can increase to store images of previous versions of data using MVCC.
2. mem_gc can be delayed until the update is complete.
3. If TRX_UPDATE_MAX_LOGSIZE is set to a higher value than LOCK_ESCALATION_MEMORY_SIZE, a lock escalation can occur during an UPDATE operation.
In a lock escalation scenario, a SELECT operation fails if an IX lock converts to an X lock and as a consequence, all services may have to wait.
Therefore, the user is recommended to reduce the number of update operations, rather than increase TRX_UPDATE_MAX_LOGSIZE.