标签:情况 variable 工作 current 禁用 res man eset 大量
MySQL查询缓存
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
1 mysql> show global variables like ‘query_cache%‘; 2 +------------------------------+---------+ 3 | Variable_name | Value | 4 +------------------------------+---------+ 5 | query_cache_limit | 1048576 | 6 | query_cache_min_res_unit | 4096 | 7 | query_cache_size | 0 | 8 | query_cache_type | ON | 9 | query_cache_wlock_invalidate | OFF | 10 +------------------------------+---------+ 11 5 rows in set (0.00 sec) 12 13 mysql> 14 15 1>.query_cache_type: 16 查询缓存类型;是否开启缓存功能,开启方式有三种{ON|OFF|DEMAND},其中DEMAND意味着select语句明确使用sql_cache选项才会缓存哟。 17 2>.query_cache_size: 18 缓存使用的总空间。单位为字节,大小必须为1024的整数倍。mysql启动时,会一次分配并立即初始化这里指定大小的内存空间;这意味着, 19 如果修改此大小,会清空所有缓存并重新初始化的。因此不建议修改此大小,最好是一开始就设计好,此内存不宜过大。 20 3>.query_cache_min_res_unit: 21 存储缓存的最小内存块 (query_cache_size-Qcache_free_memory)/Qcache_queries_in_cache能够获得一个理想的值 22 4>.query_cache_limit: 23 单个缓存对象的最大值,超出时则不予缓存;手动使用SQL_NO_CACHE可以人为的避免尝试缓存返回超出此参数限定值得语句 24 5>.query_cache_wlock_invalidate: 25 如果某个表被其他用户连接锁住了,是否仍然从缓存中返回结果,OFF表示返回。
1 mysql> show global status like ‘Qcache%‘; 2 +-------------------------+-------+ 3 | Variable_name | Value | 4 +-------------------------+-------+ 5 | Qcache_free_blocks | 0 | 6 | Qcache_free_memory | 0 | 7 | Qcache_hits | 6 | 8 | Qcache_inserts | 0 | 9 | Qcache_lowmem_prunes | 0 | 10 | Qcache_not_cached | 0 | 11 | Qcache_queries_in_cache | 0 | 12 | Qcache_total_blocks | 0 | 13 +-------------------------+-------+ 14 8 rows in set (0.01 sec) 15 16 mysql> 17 1>.Qcache_free_blocks #指的是空闲块数,指的是系统分配给MySQL进程的缓存总大小空间中还没有使用的空间。 18 2>.Qcache_hits #指的是命中次数 19 3>.Qcache_inserts #向缓存空间中插入的缓存的次数 20 4>.Qcache_free_memory #空闲空间,指的是还没有被操作系统分配出去的内存空间。 21 5>.Qcache_lowmem_prunes #内存太小,修剪内存的次数 22 6>.Qcache_not_cached #没被缓存的个数 23 7>.Qcache_queries_in_cache #缓存中缓存的查询个数 24 8>.Qcache_total_blocks #总块数,指的是系统分配给MySQL进程的缓存总大小空间 25 9>.补充知识: 26 a>.flush query_cache #碎片整理 27 b>.reset query_cache #清空缓存
1 mysql> show global status where Variable_name=‘Qcache_hits‘ OR Variable_name=‘Com_Select‘; 2 +---------------+-------+ 3 | Variable_name | Value | 4 +---------------+-------+ 5 | Com_select | 158 | 6 | Qcache_hits | 4 | 7 +---------------+-------+ 8 2 rows in set (0.00 sec) 9 10 mysql> 11 12 1>.总共查询了Com_select 次数,我们这里是158次; 13 2>.缓存命中了Qcache_hits次数,我们这里是命中了4次; 14 因此我们可以计算次数的命中率: Qcache_hits/(Qcache_hits+Com_Select),当然这只是次数的命中率,我们想要查询字节的命中率的方法就很困难了。因此,也可以参考另外一个指标,命中和写入的比率,即Qcache_hits/Qcache_inserts的值,此比值如果能大于3:1.则表明缓存也是有效的,能达到10:1,为比较理想的情况。如果不能达到这个参数,建议是关闭缓存。
标签:情况 variable 工作 current 禁用 res man eset 大量
原文地址:http://www.cnblogs.com/yinzhengjie/p/7898268.html