跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

MySQL table_cache优化(三)_MySQL

bitsCN.com发现当前一个配置问题 (mysql+linux在线系统)

show global status like open%tables%;+---------------+-------+| Variable_name | Value |+---------------+-------+| Open_tables | 966 || Opened_tables | 2919 |+---------------+-------+2 rows in set根据这些天潜心研究 (下面是有关知识)

table_cache指示表高速缓存的大小。当Mysql访问一个表时,如果在Mysql表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区,这样做的好处是可以更快速地访问表中的内容。一般来说,可以通过查看数据库运行峰值时间的状态值Open_tables和Opened_tables,用以判断是否需要增加table_cache的值show global status like open%tables%;查看打开表的情况Open_tables表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小。

比较适合的值:

Open_tables / Opened_tables * 100% >= 85% Open_tables / table_cache * 100% 当前我设置这个在线db的 table_cache=1024由此引发一个问题966/2919 仅仅为33% 这个是明显有问题的。 (这个系统是主机 有从机器从他那里取数据)

请问我究竟该如何设置这个值 table_cache=??

--------------------------------------------------------------------------------参数优化基于一个前提,就是在我们的数据库中通常都使用InnoDB表,而不使用MyISAM表。在优化MySQL时,有两个配置参数是最重要的,即table_cache和key_buffer_size。

table_cache table_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现 open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失table_cache

相关文章