Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179363
  • 博文数量: 42
  • 博客积分: 315
  • 博客等级: 二等列兵
  • 技术积分: 461
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-16 11:55
文章分类

全部博文(42)

文章存档

2013年(29)

2012年(7)

2011年(6)

我的朋友

分类: LINUX

2013-05-09 10:19:54

1,启用查询优化
query_cache_size=128M
query_cache_type=1

如果设置为0,那么可以说,你的缓存根本就没有用,相当于禁用了。但是这种情况下query_cache_size设置的大小系统是否要为其分配呢,这个问题有待于测试?
如果设置为1,将会缓存所有的结果,除非你的select语句使用SQL_NO_CACHE禁用了查询缓存。
如果设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询

这里设置的为1,缓存所有的结果

查看相关参数的值:
show status like '%Qcache%';

这里顺便解释下这个几个参数的作用:
Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。
Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。
Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。
Qcache_inserts:表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。
Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。
Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。
Qcache_queries_in_cache:当前缓存中缓存的查询数量。
Qcache_total_blocks:当前缓存的block数量。



通过对一个IP列表表进行2000次查询
未配置查询缓存:
real    0m19.238s
user    0m8.220s
sys     0m5.293s
设置查询缓存:
real    0m14.344s
user    0m7.640s
sys     0m5.011s

通过上述得知,使用查询缓存所使用的时间比未配置查询缓存的时间短。


常用操作命令:
flush query cache;碎片整理
reset query cache; 清除缓存

弊端:
1,读取查询之前必须检查缓存
2,如果查询是可以被缓存的,但是不在缓存中,那么产生的结果之后进行保存带来一些额外的开销
3,写入数据时,也会有额外的开销,必须使缓存的表失效。
阅读(1066) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~