• Heikki Linnakangas's avatar
    Add a small cache of locks owned by a resource owner in ResourceOwner. · eeb6f37d
    Heikki Linnakangas authored
    This speeds up reassigning locks to the parent owner, when the transaction
    holds a lot of locks, but only a few of them belong to the current resource
    owner. This is particularly helps pg_dump when dumping a large number of
    objects.
    
    The cache can hold up to 15 locks in each resource owner. After that, the
    cache is marked as overflowed, and we fall back to the old method of
    scanning the whole local lock table. The tradeoff here is that the cache has
    to be scanned whenever a lock is released, so if the cache is too large,
    lock release becomes more expensive. 15 seems enough to cover pg_dump, and
    doesn't have much impact on lock release.
    
    Jeff Janes, reviewed by Amit Kapila and Heikki Linnakangas.
    eeb6f37d
resowner.c 31.2 KB