全球旧事资料 分类
存命中率为7。初看上去该命中率很低,但注意到com_select等于qcache_i
sertsqcache_
ot_cache权限检查错误的总和,即这个比率中包含了缓存失效的因素,而对于数据变更频繁的系统来说,缓存是及其容易失效的,表的任何时刻的数据插入或更新都会使该表的缓存失效,所以本系统缓存的插入率很低,抛开失效的缓存因素,用如下公式计算缓存命中率:Qcache_hitsQcache_hitsQcache_i
serts8487,该比值要好得多,意味着大部分的查询都命中了缓存,换一种说法就是仍有一小部分查询没有被缓存。没被缓存和缓存失效是两个概念,分别计数,但都会引起com_select的值增加。
f命中率要多少才好,这视情况而定,因为对于每一个查询,不执行它所节约的资源远大于缓存中保存结果以及让查询失效的开销,如果缓存命中代表了开销最大的查询,那么即使很低的命中率也是有好处的。缓存可能会因为碎片、内存不足或数据改变而失效。如果已经给缓存分配了足够的内存,并且把Query_cache_mi
_res_u
it调整到了合适的值,那么大部分缓存失效都应该是由数据改变而引起的。Com_updateCom_delete等的值知道有多少查询修改了数据,也可以通过检查Qcache_lowme
_pru
es的值了解有多少查询因为内存不足而失效。接近85的命中率可以满足系统要求,如果该命中率持续降低则需要对系统进行性能分析并调整。系统表数据变更频繁,查询缓存的失效率较高,如果对变更频繁大表的查询频率较高,则使用SQL_NO_CACHE和SQL_CACHE来控制是否需要使用查询缓存。
Query_cache_size
分配给查询的总内存必须是1024的倍数,系统设置为128MB。在服务器启动的时候,MySQL会为查询缓存一次性分配变量所定义数量的内存。如果更新了变量,MySQL会立即删除所有缓存的查询,重新把缓存设置为定义的大小,并重新初始化缓存的内存。
Query_cache_type
fQuery_cache_type设置在何场景下使用QueryCache。系统的查询缓存是开启状态。_cache_type可以设置为0OFF,1ON或者2DEMOND,分别表示完全不使用querycache,除显式要求不使用querycache使用sql_
o_cache之外的所有的select都使用querycache,只有显示要求才使用querycache使用sql_cache。Query_cache_limit
该选项限制了MySQL存储的最大结果为2M,如果查询的结果比这个值大,那么就不会被缓存。服务器在产生结果的同时进行缓存,它无法预先知道结果是否会超过这一限制。如果在缓存的过程中发现已经超过了限制,MySQL会自动增加Qcache_
ot_cached的值,并且丢掉已经缓存过的值。如果预先判断会有这种情况,可以给查询加上SQL_NO_CHACHEr
好听全球资料 返回顶部