Description
Each time a leaf node in a B-tree is visited in an index scan, a scan protection row is locked and unlocked. Both the lock operation and the unlock operation will allocate a new RecordId object representing the scan protection row (the unlock operation additionally allocates a PageKey object for the RecordId). Since the scan protection handle created will be identical (seen from equals()) each time it is created for a page, it would make sense to cache it in BasePage. Then we only need to allocate the protection handle for a page once for as long as it stays in the page cache. This would save three object allocations per single-record lookup via index.