MySQL 优化之 table_open_cache

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 的大小

MySQL 5.7 参考手册 – table_open_cache

    原文作者:mashen
    原文地址: https://www.jianshu.com/p/8483b321bd65
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞