MySQL 5.6 下 table_open_cache 参数合理配置详解

table_open_cache指定表高速缓存的大小。

每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。

通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_open_cache的值。如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了(上述状态值可甀SHOW STATUS LIKE ‘Open%tables’ 获得)。注意,不能盲目地把table_open_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。

测试环境:内存4G 数据库MySQL5.6系统配置文件/etc/my.cnf中table_open_cache=512,监测table_open_cache设置是否合理,是否需要优化。

一、多大算合适 :

show status like 'open%tables';

看以下几个值:

| Variable_name            | Value  |
+--------------------------+--------+
| Open_tables              | 512    |
| Opened_tables            | 0      |
+--------------------------+--------+

发现open_tables等于table_open_cache,也是512

表明需要增加table_open_cache的值,可设为:table_open_cache=1024

二、如何修改
vi /etc/my.cnf 配置文件,[mysqld] 下

table_open_cache=1024

别忘了需mysql重启 service mysql restart 或 /etc/rc.d/init.d/mysql restart 后才生效!