table_open_cache
表文件描述符的缓存大小
( 当打开一个表后 会把这个表的文件描述符缓存下来 )
# table_open_cache
默认值 2000
最小值 1
最大值 524288
查看 table_open_cache
show global variables like 'table_open_cache';
设置 table_open_cache
set global table_open_cache = 2048;
(立即生效重启后失效)
MySQL 配置文件 my.cnf 中 mysqld 下添加 table_open_cache
[mysqld]
table_open_cache = 2048
table_open_cache 设置多少合适呢 ?
不是越大越好 table_open_cache过大占用大量文件描述符资源而不释放
用尽了系统文件描述符资源导致无法接入新的连接
如何判断 table_open_cache 大小是否够用?
可根据MySQL的两个状态值来分析
Opened_tables : 打开的所有表数量
open_tables : 打开后在缓存中的表数量
通过以上两个值来判断 table_open_cache 是否到达瓶颈
当缓存中的值open_tables
临近到了 table_open_cache 值的时候
说明表缓存池快要满了 但 Opened_tables 还在一直有新的增长 这说明你还有很多未被缓存的表
这时可以适当增加 table_open_cache 的大小