mysql table_open_cache配置

最近做性能优化,发现Table Open Cache Hit Rati(命中率)只有42%,所以找了官方文档了解相关配置
在这里插入图片描述

查看当前open_tables使用情况

show global status like 'Open%tables';

在这里插入图片描述
其中 Open_tables 是当前打开表的数量,Opened_tables是打开的文件数。如果Opened_tables值非常大或快速增加,应该增大table_open_cache的值

查看当前table_open_cache相关配置

show variables like '%open%';

在这里插入图片描述
其中第一个可以忽略,have_openssl用于检查mysql数据库是否启用openssl,和我们要讨论的无关

innodb_open_files

指定InnoDB一次可以打开的最大文件数,默认值为300,如果指定了table_open_cache且大于300则默认等于table_open_cache

open_files_limit

打开表数量限制,这个取决于系统可用文件符数量,不要大于ulimit -n,避免无可用文件符导致报错。
配置建议:

  • 10 + max_connections + (table_open_cache * 2)
  • max_connections * 5

table_open_cache

mysql所有线程打开的表的数量
建议配置为 max_connections * N(一个连接使用的最大表数)
这个N不好估算,“按照JOIN表不推荐超过3个” 这个原则我们可以取=3
查看最大连接数 show variables like 'max_connections';

注意如果Opened_tables在修改后持续仍然比Open_tables大很多,可以调大table_open_cache 但是因为有了更多的缓存表,会占用更多系统内存和文件描述符,需要根据内存使用情况和文件描述符使用情况综合考虑

table_open_cache_instances

打开表的数量缓存实例,官方建议建议在使用16个或更多cpu内核的系统上使用8或16的值,但是我们一般没有这么豪华的配置,建议按照cpu的核数配置吧。

总结

合适的table_open_cache可以使mysql性能更好,过小的配置会影响性能,但是过大也会导致其他问题出现,且不会增加性能。
同时各个配置直接有种相互关联的关系,也和系统配置有所关联,所以做配置修改时需要综合考虑。

更多详细内容可以看mysql 官方文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值