table_cache指示表高速缓存的大小。当Mysql访问一个表时,若是在Mysql表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区,这样 作的好处是能够更快速地访问表中的内容。通常来讲,能够经过查看数据库运行峰值时间的状态值Open_tables和Opened_tables,用以判 断是否须要增长table_cache的值,即若是open_tables接近table_cache的时候,而且Opened_tables这个值在逐 步增长,那就要考虑增长这个值的大小了。mysql
在mysql默认安装状况下,table_cache的值在2G内存如下的机器中的值默认时 256到512,若是机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,由于table_cache加大后,使得 mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操做慢了下来,严重影响性能。因此平时维护中仍是要根据库的实际状况去做出判断,找到最适合你维护的库的 table_cache值。sql
这里还要说明一个问题,就是table_cache加大后碰到文件描述符不够用的问题,数据库
key_buffer_size这个参数,key_buffer_size表示索引缓冲区的大小,严格说是它决定了数据库索引处理的速度,尤为 是索引读的速度。根据网络一些高手写的文章表示能够检查状态值Key_read_requests和Key_reads,便可知道 key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽量的低,至少是1:100,1:1000更好,虽然我尚未找到理论的依据,可是,我在本身维护的几台实际运 行良好的库作过的测试后代表,这个比值接近1:20000,这从结果证实了他们说这话的正确性,咱们不妨用之缓存