• Sergey Vojtovich's avatar
    MDEV-15059 - Misc small InnoDB scalability fixes · 064bd780
    Sergey Vojtovich authored
    When cloning oldest view, don't copy ReadView::m_creator_trx_id.
    It means that the owner thread is now allowed to access this member
    without trx_sys.mutex protection.
    
    To achieve this we have to keep ReadView::m_creator_trx_id in
    ReadView::m_ids. This is required to not let purge thread process
    records owned by transaction associated with oldest view.
    
    It is only required if trsanction entered read-write mode before it's
    view was created.
    
    If transaction entered read-write mode after it's view was created
    (trx_set_rw_mode()), purge thread won't be allowed to touch it because
    m_low_limit_id >= m_creator_trx_id holds. Thus we don't have to add
    this transaction id to ReadView::m_ids.
    
    Cleanups:
    
    ReadView::ids_t: don't seem to make any sense, just complicate matters.
    
    ReadView::copy_trx_ids(): doesn't make sense anymore, integrated into
    caller.
    
    ReadView::copy_complete(): not needed anymore.
    
    ReadView copy constructores: don't seem to make any sense.
    
    trx_purge_truncate_history(): removed view argument, access
    purge_sys->view directly instead.
    064bd780
trx0trx.cc 72.9 KB