一。简单介绍
table_open_cache(5.1.3之前叫 table_cache)主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。
当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。
在执行缓存操作之前,table_open_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_open_cache,则会将 新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。每当MySQL访问一个表时,如果在表缓冲区中还有 空间,该表就被打开并放入其中,这样可以更快地访问表内容。
二,相关参数
三,参数设置
如果show processlist显示很多opening table closing table很多,那么就应该调整这些参数了。
如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加 table_open_cache的值了。
注意,不能盲目地把table_open_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。