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;
}
}