SQL参数优化:table_open_cache参数合理配置

Mysql中参数table_open_cache指定了数据表缓存的大小,也就是说MySQL访问一个表时,如果缓冲区中还有剩余空间,该表就被打开并放入其中,起到缓存作用。

table_open_cache的设置,可以通过对比峰值时间Open_tables和Opened_tables来确定。

以table_open_cache=128为例。

一、查询table_open_cache缓存表状态

mysql> show variables like '%table_open_cache%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| table_open_cache | 128 |
| table_open_cache_instances | 1 |
+----------------------------+-------+

二、查询已经打开表的状态

mysql> show global status like 'open%tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 128 |
| Opened_tables | 301 |
+---------------+-------+

上例中可见,open_tables和table_open_cache相等为128,说明打开的表全缓存了,也就是说没有剩余空间了,mysql需要将缓存的表释放以容纳新的表,这时可能需要加大table_open_cache的值。

比较适合的经验值:
PA :Open_tables / Opened_tables >= 0.85
PB:Open_tables / table_open_cache <= 0.95

本例中,PA=128/301=42%,PB=128/128=100%,table_open_cache_instances=1,表示table_open_cache=128设置过小,应该增大table_open_cache值。

#现在前往

精选留言

参数,SQL,优化,table
sample
2021-01-23
写留言
签到
投稿
QQ咨询
返回顶部