• Marko Mäkelä's avatar
    MDEV-17138 Reduce redo log volume for undo tablespace initialization · 5567a8c9
    Marko Mäkelä authored
    Implement a 10.4 redo log format, which extends the 10.3 format
    by introducing the MLOG_MEMSET record.
    
    MLOG_MEMSET: A new redo log record type for filling an area with a byte.
    
    mlog_memset(): Write the MLOG_MEMSET record.
    
    mlog_parse_nbytes(): Handle MLOG_MEMSET as well.
    
    trx_rseg_header_create(): Reduce the redo log volume by making use of
    mlog_memset() and the zero-initialization that happens inside page
    allocation.
    
    fil_addr_null: Remove.
    
    flst_init(): Create a variant that takes a zero-initialized
    buf_block_t* as a parameter, and only writes the FIL_NULL using
    mlog_memset().
    
    flst_zero_addr(): A variant of flst_write_addr() that writes
    a null address using mlog_memset() for the FIL_NULL.
    
    The following fixes are replacing some use of MLOG_WRITE_STRING
    with the more compact MLOG_MEMSET record, or eliminating
    redundant redo log writes:
    
    btr_store_big_rec_extern_fields(): Invoke mlog_memset() for
    zero-initializing the tail of the ROW_FORMAT=COMPRESSED BLOB page.
    
    trx_sysf_create(), trx_rseg_format_upgrade(): Invoke mlog_memset()
    for zero-initializing the page trailer.
    
    fsp_header_init(), trx_rseg_header_create():
    Remove redundant zero-initializations.
    5567a8c9
srv0start.cc 70.9 KB