While updating many records in a single transaction, the update rate slowed down over time. This happened even if a table lock was acquired and PreImage memory use was reduced with the MAX_PREIMAGE_DATA configuration option. Increasing the PREIMAGE_HASH_MAX configuration option improved the situation, however even with that option the update rate slowed over time.
A hash table is used to efficiently search the PreImage space entries containing the updated record images. This hashing has been improved in the following critical areas:
For maximum performance, we have modified the hash function to use up to 2^31-1 hash bins. We also modified the lock hash function in the same manner.
Prior to this change, dynamic hashing defaulted to a maximum number of hash bins of 128K. PREIMAGE_HASH_MAX can raise this limit.
Hint: PREIMAGE_HASH_MAX and LOCK_HASH_MAX keyword values larger than 1 million can provide additional performance benefits for large transactions.
Default: The default value for the PREIMAGE_HASH_MAX configuration option has been increased from 131072 to 1048576 such that a dynamic hash of PreImage space entries is more effective for large transactions without requiring a server administrator to increase this setting.