bayaim_mysql5.6下table_open_cache参数
bayaim_mysql5.6下table_open_cache参数_2017年12月26日10:51:58
(如果你做件事,想疯子似得,那你一定能成功,你想和别人同样的时间和精力还想超越别人,除非你是超人。但通常你我都是凡人。)
--bayaim 2017年12月26日10:55:04
mysql5.6下table_open_cache参数 < 以下内容纯属抄袭,爱看不看>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
单位: M
table_open_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。
通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_open_cache的值。如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了(上述状态值可:SHOW STATUS LIKE ‘Open%tables’获得)。
注意,不能盲目地把table_open_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
测试环境:内存4G 数据库MySQL5.6系统配置文件/etc/my.cnf中table_open_cache=512,监测table_open_cache设置是否合理,是否需要优化。
查询LINUX 内存大小:
[root@oradata ~]# free -m
total used free shared buffers cached
Mem: 64508 64251 257 0 274 61507
-/+ buffers/cache: 2469 62039
Swap: 32255 304 31951
[root@oradata ~]# cat /proc/meminfo
一、多大算合适 :
mysql> show variables like '%table_open_cache%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| table_open_cache | 2000 |
| table_open_cache_instances | 1 |
+----------------------------+-------+
2 rows in set (0.00 sec)
mysql> show status like 'open%tables';
看以下几个值:
| Variable_name | Value |
+--------------------------+--------+
| Open_tables | 512 |
| Opened_tables | 0 |
+--------------------------+--------+
发现open_tables等于table_open_cache,也是512
表明需要增加table_open_cache的值,可设为:table_open_cache=1024
发现open_tables等于table_open_cache,都是512,说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加大table_open_cache的值,4G内存的机器,建议设置为2048
比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95
如果对此参数的把握不是很准,有个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。
二、如何修改
mysql> set global table_open_cache=1024;
Query OK, 0 rows affected (0.00 sec)
设置后可以观察一下,如果opening table不再怎么出现,说明此修改是有效的,将其添加到mysql的配置文件,这样数据库重启后仍可保留此设置。
vi /etc/my.cnf 配置文件,[mysqld] 下
table_open_cache=1024
别忘了需mysql重启 service mysql restart 或 /etc/rc.d/init.d/mysql restart 后才生效!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--bayaim 2017年12月26日10:55:04
mysql5.6下table_open_cache参数 < 以下内容纯属抄袭,爱看不看>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
单位: M
table_open_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。
通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_open_cache的值。如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了(上述状态值可:SHOW STATUS LIKE ‘Open%tables’获得)。
注意,不能盲目地把table_open_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
测试环境:内存4G 数据库MySQL5.6系统配置文件/etc/my.cnf中table_open_cache=512,监测table_open_cache设置是否合理,是否需要优化。
查询LINUX 内存大小:
[root@oradata ~]# free -m
total used free shared buffers cached
Mem: 64508 64251 257 0 274 61507
-/+ buffers/cache: 2469 62039
Swap: 32255 304 31951
[root@oradata ~]# cat /proc/meminfo
一、多大算合适 :
mysql> show variables like '%table_open_cache%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| table_open_cache | 2000 |
| table_open_cache_instances | 1 |
+----------------------------+-------+
2 rows in set (0.00 sec)
mysql> show status like 'open%tables';
看以下几个值:
| Variable_name | Value |
+--------------------------+--------+
| Open_tables | 512 |
| Opened_tables | 0 |
+--------------------------+--------+
发现open_tables等于table_open_cache,也是512
表明需要增加table_open_cache的值,可设为:table_open_cache=1024
发现open_tables等于table_open_cache,都是512,说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加大table_open_cache的值,4G内存的机器,建议设置为2048
比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95
如果对此参数的把握不是很准,有个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。
二、如何修改
mysql> set global table_open_cache=1024;
Query OK, 0 rows affected (0.00 sec)
设置后可以观察一下,如果opening table不再怎么出现,说明此修改是有效的,将其添加到mysql的配置文件,这样数据库重启后仍可保留此设置。
vi /etc/my.cnf 配置文件,[mysqld] 下
table_open_cache=1024
别忘了需mysql重启 service mysql restart 或 /etc/rc.d/init.d/mysql restart 后才生效!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【欢迎关注公众号】:database运维