---- 仅仅作为简单研究 代码5.7.22 有误请谅解 ---- 一、关于参数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 = table_cache_size; } } if (innobase_open_files > (long) open_files_limit) { ib::warn() << "innodb_open_files 5000, srv_max_n_open_files); ->fil_system->max_n_open = max_n_open; 这里的srv_max_n_open_files实际上就是我们的参数innodb_open_files spaces 按照space id进行hash name_hash 按照space的名字进行hash max_n_open 参数innodb_open_files设置的值 n_open 当前打开的文件数量
(合理的话就不会遇到这个问题了-_-)问题注:mysql的启动参数是有加 --user=mysql 的mysql使用root启动, innodb_open_files 无效mysql使用mysql启动, = 16000 不正常 我们设置的是63000open_files_limit = 63000 正常问题2我们使用 mysql 重启mysqld进程后 再次查看参数innodb_open_files = 65535 正常(其实也不正常)open_files_limit = 65536 不正常(我们设置的63000)分析思路innodb_open_files 是在同一时刻能打开的innodb文件最大数量 现在再来看看innodb_open_files吧. 我这里就直接验证了.root启动: open_files_limit 取 my.cnf文件的63000 但innodb_open_files是65535 大于 63000 且大于 16000 所以innodb_open_files
1 innodb_open_files 的修改 现在支持动态修改。 为了防止非 LRU 管理的文件占用整个 innodb_open_files 限制,非LRU管理的文件被限制到innodb_open_files 设置的90%,也就是为 LRU 管理的文件保留 innodb_open_files
innodb_write_io_threads = 8 如果数据库的读操作比写操作多,那么可以设置: innodb_read_io_threads = 10 innodb_write_io_threads = 6 innodb_open_files innodb_open_files的大小对InnoDB效率的影响比较小。 但是在InnoDBcrash的情况下,innodb_open_files设置过小会影响recovery的效率。 所以用InnoDB的时候还是把innodb_open_files放大一些比较合适。 查询: 在线配置: 配置文件:innodb_open_files = 1000 innodb_log_file_size 这个参数指定在一个日志组中,每个log的大小。
-+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-------------------+----------------+ | innodb_open_files
结论: 共享表空间在Insert操作上有优势外,其它都没独立表空间表现好 启用独立表空间时,合理调整一下:innodb_open_files innodb_file_per_table = 1 可以修改
“innodb_open_files”变量用来定义InnoDB一次可以打开文件的数量,现在支持使用SELECT innodb_set_open_files_limit(N)语句设置。
innodb_log_buffer_size[64M] innodb_log_file_size[1G] innodb_log_files_in_group[2] innodb_max_dirty_pages_pct[75.000000] innodb_open_files innodb_log_buffer_size[16M] innodb_log_file_size[2G] innodb_log_files_in_group[2] innodb_max_dirty_pages_pct[75.000000] innodb_open_files
innodb_buffer_pool_instances=8 --innodb_log_file_size=1G --innodb_io_capacity=5000 --innodb_io_capacity_max=10000 --innodb_open_files innodb_buffer_pool_instances=8 --innodb_log_file_size=1G --innodb_io_capacity=5000 --innodb_io_capacity_max=10000 --innodb_open_files
innodb_write_io_threads=32 innodb_read_io_threads=16 innodb_purge_threads=4 innodb_page_cleaners=4 innodb_open_files innodb_max_dirty_pages_pct=50 innodb_lru_scan_depth=4000 innodb_status_file=1 innodb_change_buffer_max_size=50 innodb_open_files
---------------+--------+ | character_set_filesystem | binary | | innodb_log_files_in_group | 2 | | innodb_open_files
innodb_write_io_threads=32 innodb_read_io_threads=16 innodb_purge_threads=4 innodb_page_cleaners=4 innodb_open_files innodb_max_dirty_pages_pct=50 innodb_lru_scan_depth=4000 innodb_status_file=1 innodb_change_buffer_max_size=50 innodb_open_files
skip-external-locking default_storage_engine = InnoDB #default-storage-engine = MyISAM innodb_file_per_table = 1 innodb_open_files
log-slow-admin-statements = TRUE log-slow-admin-statements = TRUE #innodb引擎 innodb_file_per_table = 1 innodb_open_files
table_open_cache_instances=16 # files innodb_file_per_table innodb_log_file_size=1024M innodb_log_files_in_group = 3 innodb_open_files
因为该报错很有可能是由于文件描述符数量引起的,要求输入的信息分别为: open_files_limit ulimit -n Innodb open files open_files_limit ulimit -n innodb_open_files
log-slow-admin-statements = TRUE log-slow-admin-statements = TRUE #innodb引擎 innodb_file_per_table = 1 innodb_open_files
explicit_defaults_for_timestamp skip-external-locking default_storage_engine = InnoDB innodb_file_per_table = 1 innodb_open_files
的打开、刷写模式) Innodb_File_Per_Table (InnoDB为独立表空间模式) Innodb_Lock_Wait_Timeout (事务等待获取资源等待的最长时间) Innodb_Open_Files
当启用独立表空间时,请合理调整一 下:innodb_open_files 。