Mysql主要配置参数1:table_cache 表缓存
Mysql
主要参数在优化MySQL时,有两个配置参数是最重要的,即table_cache和key_buffer_size。而具体到应用环境还有个查询参数query_cache_size直接影响查询性能。下面主要是整理的关于下面三个参数的文章
1.table_cache 表缓存
2.key_buffer_size 键缓冲
3.query_cache_size查询缓存
参数5参考文章
首先,在了解这些参数设置前需要明确的概念是• 什么是mysql
/l_13_1.htm" title="MYSQL" >MYSQL的缓存:在内存中预留的块•
访问内存中的数据快于访问磁盘上的数据。
• 把数据保存在内存中更重要的是可以减少磁盘IO操作。• 当数据变化(update insert
delete...)时对应的缓存就失效
• 内存是有限的
1、table_cache 表缓存table_cache指示表高速缓存的大小。当Mysql
访问一个表时,如果在Mysql表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区,这样做的好处是可以更快速地访问表中的内容。一般来说,可以通过查看数据库运行峰值时间的状态值Open_tables和Opened_tables,用以判断是否需要增加table_cache的值,即如果open_tables接近table_cache的时候,并且Opened_tables这个值在逐步增加,那就要考虑增加这个值的大小了。在
mysql
默认安装情况下,table_cache的值在2G内存以下的机器中的值默认时256到512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead
lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。所以平时维护中还是要根据库的实际情况去作出判断,找到最适合你维护的库的table_cache值当服务器打开表文件的时候,它试图保持这些文件的打开状态,以减少打开文件操作的数量。为了实现这样的功能,它在表缓存中维护打开文件的信息。table_cache系统变量控制着这个缓存的大小。如果服务器访问了大量的表,表缓存就会被填满,并且服务器会关闭那些有一段时间没有使用的表,为打开新表留出空间。你可以通过检查Opened_tables状态指示器来访问表缓存的效果:
SHOW STATUS LIKE
’Opened_tables’;Opened_tables显示了某个数据表必须打开的次数(因为它还没有打开)。这个值也显示为
mysql
admin状态命令的输出信息中的Opens值。如果这个数字是稳定的或缓慢增长,那么它的设置可能是正确的。如果这个数字增长得很快,就意味着这个缓存太小了,必须经常关闭数据表来为打开其它的数据表留出空间。如果你拥有文件描述信息,增加表缓存大小将减少数据表打开操作的数量。#
注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
mysql
手册上给的建议大小是:table_cache=max_connections*nn表示查询语句中最大表数,还需要为临时表和文件保留一些额外的文件描述符。
这个数据遭到很多质疑,table_cache够用就好,检查Opened_tables值,如果这个值很大,或增长很快那么你就得考虑加大table_cache了.在下面的条件下,未使用的表将被关闭并从表缓存中移出:
• 当缓存满了并且一个线程试图打开一个不在缓存中的表时。•
当缓存包含超过table_cache个条目,并且缓存中的表不再被任何线程使用。
• 当表刷新操作发生。当执行FLUSH TABLES语句或执行mysqladmin
flush-tables或mysqladmin
refresh命令时会发生。当表缓存满时,服务器使用下列过程找到一个缓存入口来使用:
• 当前未使用的表被释放,以最近最少使用顺序。•
如果缓存满了并且没有表可以释放,但是一个新表需要打开,缓存必须临时被扩大。
如果缓存处于一个临时扩大状态并且一个表从在用变为不在用状态,它被关闭并从缓存中释放。几个关于table_cache的状态值:
1
table_cache:所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量。默认值是64.2
open_tables:当前打开的表的数量.
3 opened_tables :Number of table cache
misses,如果opened_tables较大,table_cache 值可能太小.4
Open_table_definitions : The number of cached
.frm files. This variable was added in MySQL 5.1.3.
5 Opened_table_definitions : The number of
.frm files that have been cached. This variable was added in MySQL
5.1.24.