mysql优化配置:table_open_cache的设置
温馨提示:
最后更新时间2020-12-23 17:26:26,若内容或图片失效,请留言反馈!
MYSQL默认的table_open_cache为64,这个数值是偏小的,如果max_connections较大,则容易引起性能问题。
表现:数据库查询效率慢,show processlist 发现比较多的查询正在opening table。
MySQL [(none)]> show global status like 'open%tables%';+---------------+-------+| Variable_name | Value |+---------------+-------+| Open_tables | 52 | 打开的缓存表数量| Opened_tables | 132 | 打开的所有表数量+---------------+-------+
如果Opened_tables数值非常大,说明cache太小,导致要频繁地open table,可以查看下当前的table_open_cache设置:
MySQL [(none)]> show variables like '%table_open_cache%';+----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| table_open_cache | 2000 || table_open_cache_instances | 16 |+----------------------------+-------+
table_open_cache 这个参数设置多少合适呢?
——肯定不是越大越好,太大了会占用太多文件描述符,描述符用尽会导致无法建立新连接。那这么设置这个值呢?
MySQL [(none)]> set global table_open_cache=1024;
Query OK, 0 rows affected (0.00 sec)
1. 根据Open_tables,这个参数接近table_open_cache,说明缓冲池快满了
2. Opened_tables还一直在增加,说明还有新的表打开没有被缓存
总结,同时符合上面两条说明你的表打开缓存太小了,需要适量增加。
文章版权声明:除非注明,否则均为林羽凡原创文章,转载或复制请以超链接形式并注明出处。