• Marko Mäkelä's avatar
    MDEV-12121 Introduce build option WITH_INNODB_AHI to disable innodb_adaptive_hash_index · 27b9989d
    Marko Mäkelä authored
    The InnoDB adaptive hash index is sometimes degrading the performance of
    InnoDB, and it is sometimes disabled to get more consistent performance.
    We should have a compile-time option to disable the adaptive hash index.
    
    Let us introduce two options:
    
    OPTION(WITH_INNODB_AHI "Include innodb_adaptive_hash_index" ON)
    OPTION(WITH_INNODB_ROOT_GUESS "Cache index root block descriptors" ON)
    
    where WITH_INNODB_AHI always implies WITH_INNODB_ROOT_GUESS.
    
    As part of this change, the misleadingly named function
    trx_search_latch_release_if_reserved(trx) will be replaced with the macro
    trx_assert_no_search_latch(trx) that will be empty unless
    BTR_CUR_HASH_ADAPT is defined (cmake -DWITH_INNODB_AHI=ON).
    
    We will also remove the unused column
    INFORMATION_SCHEMA.INNODB_TRX.TRX_ADAPTIVE_HASH_TIMEOUT.
    In MariaDB Server 10.1, it used to reflect the value of
    trx_t::search_latch_timeout which could be adjusted during
    row_search_for_mysql(). In 10.2, there is no such field.
    
    Other than the removal of the unused column TRX_ADAPTIVE_HASH_TIMEOUT,
    this is an almost non-functional change to the server when using the
    default build options.
    
    Some tests are adjusted so that they will work with both
    -DWITH_INNODB_AHI=ON and -DWITH_INNODB_AHI=OFF. The test
    innodb.innodb_monitor has been renamed to innodb.monitor
    in order to track MySQL 5.7, and the duplicate tests
    sys_vars.innodb_monitor_* are removed.
    27b9989d
btr0sea.h 12.2 KB