• Marko Mäkelä's avatar
    MDEV-12227 Defer writes to the InnoDB temporary tablespace · 5eb53955
    Marko Mäkelä authored
    The flushing of the InnoDB temporary tablespace is unnecessarily
    tied to the write-ahead redo logging and redo log checkpoints,
    which must be tied to the page writes of persistent tablespaces.
    
    Let us simply omit any pages of temporary tables from buf_pool.flush_list.
    In this way, log checkpoints will never incur any 'collateral damage' of
    writing out unmodified changes for temporary tables.
    
    After this change, pages of the temporary tablespace can only be written
    out by buf_flush_lists(n_pages,0) as part of LRU eviction. Hopefully,
    most of the time, that code will never be executed, and instead, the
    temporary pages will be evicted by buf_release_freed_page() without
    ever being written back to the temporary tablespace file.
    
    This should improve the efficiency of the checkpoint flushing and
    the buf_flush_page_cleaner thread.
    
    Reviewed by: Vladislav Vaintroub
    5eb53955
buf0flu.ic 2.82 KB