MySQL:innodb_open_files参数及其周边

作者简介:高鹏,笔名八怪。《深入理解MySQL主从原理》图书作者,同时运营个人公众号“MySQL学习”,持续分享遇到的有趣case以及代码解析!

一、关于参数innodb_open_files

  • 如果innodb_open_files小于10(或者没有设置为0), innodb_file_per_table 没有启用的情况下默认值就是300
  • 如果innodb_open_files小于10(或者没有设置为0),如果在 innodb_file_per_table开启的且table_cache_size 大于300,则innobase_open_files 为table_cache_size(table_open_cache)
  • 如果innobase_open_files设置大于了open_files_limit,则爆出警告,同时如果大于table_cache_size则设置为table_cache_size(table_open_cache)

代码如下:

 if (innobase_open_files < 10) {    innobase_open_files = 300;     if (srv_file_per_table && table_cache_size > 300) {       innobase_open_files = table_cache_size;         }      }    if (innobase_open_files > (long) open_files_limit) {      ib::warn() < (long) table_cache_size) {          innobase_open_files = table_cache_size;         }      }