• mariadb-DebarunBanerjee's avatar
    MDEV-28800 SIGABRT due to running out of memory for InnoDB locks · 8047c8bc
    mariadb-DebarunBanerjee authored
    This regression is introduced in 10.6 by following commit.
    commit 898dcf93
    (Cleanup the lock creation)
    
    It removed one important optimization for lock bitmap pre-allocation.
    We pre-allocate about 8 byte extra space along with every lock object to
    adjust for similar locks on newly created records on the same page by
    same transaction. When it is exhausted, a new lock object is created
    with similar 8 byte pre-allocation. With this optimization removed we
    are left with only 1 byte pre-allocation. When large number of records
    are inserted and locked in a single page, we end up creating too many
    new locks almost in n^2 order.
    
    Fix-1: Bring back LOCK_PAGE_BITMAP_MARGIN for pre-allocation.
    
    Fix-2: Use the extra space (40 bytes) for bitmap in trx->lock.rec_pool.
    8047c8bc
lock_memory.result 705 Bytes