• Marko Mäkelä's avatar
    MDEV-25113: Make page flushing faster · 22b62eda
    Marko Mäkelä authored
    buf_page_write_complete(): Reduce the buf_pool.mutex hold time,
    and do not acquire buf_pool.flush_list_mutex at all.
    Instead, mark blocks clean by setting oldest_modification to 1.
    Dirty pages of temporary tables will be identified by the special
    value 2 instead of the previous special value 1.
    (By design of the ib_logfile0 format, actual LSN values smaller
    than 2048 are not possible.)
    
    buf_LRU_free_page(), buf_pool_t::get_oldest_modification()
    and many other functions will remove the garbage (clean blocks)
    from buf_pool.flush_list while holding buf_pool.flush_list_mutex.
    
    buf_pool_t::n_flush_LRU, buf_pool_t::n_flush_list:
    Replaced with non-atomic variables, protected by buf_pool.mutex,
    to avoid unnecessary synchronization when modifying the counts.
    
    export_vars: Remove unnecessary indirection for
    innodb_pages_created, innodb_pages_read, innodb_pages_written.
    22b62eda
srv0srv.cc 64.7 KB