• Michael Widenius's avatar
    Fixed problem with very slow shutdown when using 100,000 MyISAM tables with delay_key_write · f0f2072d
    Michael Widenius authored
    Reason for the problem was that the hash of changed files in the key cache was too small (was 128). Fixed by making the hash size larger and changeable.
    
    - Introduced key-cache-file-hash-size (default 512) for MyISAM and aria_pagecache_file_hash_size (default 512) for Aria.
    - Added new status variable "Feature_delay_key_write" which counts number of tables opened that are using delay_key_write
    
    
    mysql-test/r/features.result:
      Added test of Feature_delay_key_write
    mysql-test/r/key_cache.result:
      Updated tests as the number of blocks has changed
    mysql-test/r/mysqld--help.result:
      Updated result
    mysql-test/suite/maria/maria3.result:
      Updated result
    mysql-test/suite/sys_vars/r/key_cache_file_hash_size_basic.result:
      Test new variable
    mysql-test/suite/sys_vars/t/aria_pagecache_file_hash_size_basic.test:
      Test new variable
    mysql-test/suite/sys_vars/t/key_cache_file_hash_size_basic.test:
      Test new variable
    mysql-test/t/features.test:
      Added test of Feature_delay_key_write
    mysql-test/t/key_cache.test:
      Updated tests as the number of blocks has changed
    mysys/mf_keycache.c:
      Made CHANGED_BLOCKS_HASH dynamic
    sql/handler.cc:
      Updated call to init_key_cache()
    sql/mysqld.cc:
      Added "Feature_delay_key_write"
      Added support for key-cache-file-hash-size
    sql/mysqld.h:
      Added support for key-cache-file-hash-size
    sql/sql_class.h:
      Added feature_files_opened_with_delayed_keys
    sql/sys_vars.cc:
      Added key_cache_file_hash_size
    storage/maria/ha_maria.cc:
      Added pagecache_file_hash_size
      Added counting of files with delay_key_write
    storage/maria/ma_checkpoint.c:
      Fixed compiler warning
    storage/maria/ma_pagecache.c:
      Made PAGECACHE_CHANGED_BLOCKS_HASH into a variable
    storage/maria/ma_pagecache.h:
      Made PAGECACHE_CHANGED_BLOCKS_HASH into a variable
    storage/maria/ma_rt_test.c:
      Updated parameters for init_pagecache()
    storage/maria/ma_test1.c:
      Updated parameters for init_pagecache()
    storage/maria/ma_test2.c:
      Updated parameters for init_pagecache()
    storage/maria/ma_test3.c:
      Updated parameters for init_pagecache()
    storage/maria/maria_chk.c:
      Updated parameters for init_pagecache()
    storage/maria/maria_ftdump.c:
      Updated parameters for init_pagecache()
    storage/maria/maria_pack.c:
      Updated parameters for init_pagecache()
    storage/maria/maria_read_log.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_pagecache_consist.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_pagecache_rwconsist.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_pagecache_rwconsist2.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_pagecache_single.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_multithread-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_noflush-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_nologs-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
      Updated parameters for init_pagecache()
    storage/maria/unittest/ma_test_loghandler_purge-t.c:
      Updated parameters for init_pagecache()
    storage/myisam/ha_myisam.cc:
      Added counting of files with delay_key_write
    storage/myisam/mi_check.c:
      Updated call to init_key_cache()
    storage/myisam/mi_test1.c:
      Updated call to init_key_cache()
    storage/myisam/mi_test2.c:
      Updated call to init_key_cache()
    storage/myisam/mi_test3.c:
      Updated call to init_key_cache()
    storage/myisam/mi_test_all.sh:
      Fixed broken test
    storage/myisam/myisam_ftdump.c:
      Updated call to init_key_cache()
    storage/myisam/myisamchk.c:
      Updated call to init_key_cache()
    storage/myisam/myisamlog.c:
      Updated call to init_key_cache()
    f0f2072d
keycache.h 8.62 KB