高性能MySql进化论(十三):查询缓存机制(二)

2014-11-24 16:34:50 · 作者: · 浏览: 1
结果。

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