MDEV-15059 - Misc small InnoDB scalability fixes
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.
Showing
Please register or sign in to comment