我们都知道MySQL的TableCache是表定义的缓存,江湖上流传着各种对这个参数的调优方法。
tablecache的作用,就是节约读取表结构文件的开销。对于tablecache是否命中,其实tablecache是针对于线程的,每个线程有自己的缓存,只缓存本线程的表结构定义。不过我们发现,strace中没有关于表结构文件的open *** 作(只有stat *** 作,定位表结构文件是否存在),也就是说tablecache不命中,不一定需要读取表结构文件。这种感觉好像是:在不命中tablecache时,命中了另外一个表结构缓存。
运维建议:
我们读一下MySQL的文档,关于table_open_cache的建议值公式:建议值=最大并发数join语句涉及的表的最大个数。
通过实验我们容易理解:table_cache是针对于线程的,所以需要最大并发数个缓存。另外,一个语句join涉及的表,需要同时在缓存中存在。所以最小的缓存大小,等于语句join涉及的表的最大个数。将这两个数相乘,就得到了MySQL的建议值公式。
以上就是关于数据库缓存机制是什么缓存是如何作用数据库全部的内容,包括:数据库缓存机制是什么缓存是如何作用数据库、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)