• Monty's avatar
    MDEV-34043 Drastically slower query performance between CentOS (2sec) and Rocky (48sec) · 1f040ae0
    Monty authored
    One cause of the slowdown is because the ftruncate call can be much
    slower on some systems.  ftruncate() is called by Aria for internal
    temporary tables, tables created by the optimizer, when the upper level
    asks Aria to delete the previous result set. This is needed when some
    content from previous tables changes.
    
    I have now changed Aria so that for internal temporary tables we don't
    call ftruncate() anymore for maria_delete_all_rows().
    
    I also had to update the Aria repair code to use the logical datafile
    size and not the on-disk datafile size, which may contain data from a
    previous result set.  The repair code is called to create indexes for
    the internal temporary table after it is filled.
    I also replaced a call to mysql_file_size() with a pwrite() in
    _ma_bitmap_create_first().
    
    Reviewer: Sergei Petrunia <sergey@mariadb.com>
    Tester: Dave Gosselin <dave.gosselin@mariadb.com>
    1f040ae0
ma_check.c 239 KB