2或DEMAND
只缓存以SELECT SQL_NO_CACHE开头的查询结果。
该变量默认设为ON。
query_cache_wlock_invalidate
一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户端来等待。
2 查询缓存的优化流程
当开启了查询缓存的功能后,可以通过一些参数以及状态值来观察查询缓存的使用情况。
流程以及涉及到的参数参见下图

3 查询缓存的优化
除了上图提到的一些优化策略外,还可以通过下面的措施来提高查询缓存的效率
尽量用小表的简单替代大表的复杂查询
尽量用批量写入取代单条写入
控制query_cache_size的大小,甚至是禁用查询缓存
通过DEMAND+SQL_CACHE/SQL_NO_CACHE来灵活控制某个select是否需要进行缓存
对于写密集型的应用,直接禁用查询缓存
4 Reference
更多信息可以参考:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#query-cache