mysql优化参数table_open_cache

table_open_cache 主要用于设置table高速缓存的数量
查询open table的情况
mysql> show global status like ‘open%tables%’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| Open_tables | 2048 |
| Opened_tables | 46554 |
+—————+——-+
2 rows in set (0.00 sec)
mysql> show variables like ‘table_open_cache’;
+——————+——-+
| Variable_name | Value |
+——————+——-+
| table_open_cache | 2048 |
+——————+——-+
1 row in set (0.00 sec)

在5.1.3之前的版本中叫做table_cache,由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。

缓存机制
当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。
如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;
如果该表未被缓存,则会将当前的表添加进缓存并进行查询。
在执行缓存操作之前,table_open_cache用于限制缓存表的最大数目:
如果当前已经缓存的表未达到table_open_cache,则会将新表添加进来;
若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存

比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95
清空缓存
执行 mysql > flush tables;
如果opened_tables数量过大,说明配置中table_open_cache值可能太小
如果对此参数的把握不是很准,建议:把mysql数据库放在生产环境中试运行一段时间,然后把参数的值调整得比opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比opened_tables略大。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注