Previous Topic

Next Topic

Disable Reuse of Deleted Space in Variable Length Transaction Controlled Memory Files

A feature introduced in V8.27 allowed more efficient reuse of space in transaction controlled variable length records. It was found, however, that an update of such a record that was a memory file record failed with an ITIM_ERR error (160) on a commit of the transaction. A further symptom of this error was high CPU usage by the server after this event.

When a memory record was updated such that its size was reduced, and if the unused space at the end of the record is large enough, a variable-length header (containing a delete mark) was written at the start of the unused portion of the record. For a memory file, this resulted in a 160 error when updating the memory record images at the end of the transaction, as the memory address of this change to the (now new) record image does not correspond to the start of a memory record maintained in the memory file hash table.

As reuse of space is not appropriate for memory files, the marking of space as deleted is no longer done for this c-tree file type.

Note: The space management feature can also be disabled for all transaction controlled files with the server configuration keyword: COMPATIBILITY NO_VARLEN_TRAN_UNUSED