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

发布时间: 更新时间: 总字数:563 阅读时间:2m 作者: IP上海 分享 网址

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

原理

通过检查峰值时间的状态值Open_tablesOpened_tables,可以决定是否需要增加table_open_cache的值。

如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了,上述状态值可通过获得:

SHOW GLOBAL STATUS LIKE 'Open%tables';

注意,不能盲目地把 table_open_cache 设置成很大的值,设置太大超过了 shell 的文件描述符(通过ulimit -n查看),造成文件描述符不足,从而造成性能不稳定或者连接失败。

测试环境:某 IDC 云主机,内存 4000M,在控制台查看到 table_open_cache = 512,监测 table_open_cache 设置是否合理,是否需要优化。

发现open_tables等于table_open_cache都是 512,说明 mysql 正在将缓存的表释放以容纳新的表,此时可能需要加大table_open_cache的值,4G 内存的机器,建议设置为 2048

推荐值

Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95

如果对此参数的把握不是很准,有个很保守的设置建议:把 MySQL 数据库放在生产环境中试运行一段时间,然后把参数的值调整得比 Opened_tables 的数值大一些,并且保证在比较高负载的极端条件下依然比 Opened_tables 略大。

查看打开文件个数

lsof | grep mysql | wc -l
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数