
我们都知道MySQL的TableCache是表定义的缓存,江湖上流传着各种对这个参数的调优方法。
tablecache的作用,就是节约读取表结构文件的开销。对于tablecache是否命中,其实tablecache是针对于线程的,每个线程有自己的缓存,只缓存本线程的表结构定义。不过我们发现,strace中没有关于表结构文件的open *** 作(只有stat *** 作,定位表结构文件是否存在),也就是说tablecache不命中,不一定需要读取表结构文件。这种感觉好像是:在不命中tablecache时,命中了另外一个表结构缓存。
运维建议:
我们读一下MySQL的文档,关于table_open_cache的建议值公式:建议值=最大并发数join语句涉及的表的最大个数。
通过实验我们容易理解:table_cache是针对于线程的,所以需要最大并发数个缓存。另外,一个语句join涉及的表,需要同时在缓存中存在。所以最小的缓存大小,等于语句join涉及的表的最大个数。将这两个数相乘,就得到了MySQL的建议值公式。
不是。oracle序列指的是在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。同时该序列中的cache越大,对象越多,所以并不是cache越大越好。同时Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
comp2Add(new Leaf("Leaf XYA"));
comp2Add(new Leaf("Leaf XYB"));
rootAdd(comp2);
rootAdd(new Leaf("Leaf C"));
Leaf leaf = new Leaf("Leaf D");
rootAdd(leaf);
rootRemove(leaf);
以上就是关于数据库缓存机制是什么缓存是如何作用数据库全部的内容,包括:数据库缓存机制是什么缓存是如何作用数据库、oracle序列cache越大越好吗、什么是cache数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)