MySQL缓存机制:
当MySQL开启了缓存模式(query_cache_type=1)后,mysql会把查询语句和查询结果保存在一张hash表中,下一次用同样的sql语句查询时,mysql会先从这张hash表中获取数据,如果缓存没有命中,则解析sql语句,查询数据库。 当缓存的数据达到最大值(query_cache_size) 后,mysql会把老的数据删除掉,写入信的数据。
mysql的缓存是非持久化的,当mysql重启后,缓存即消失。
如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的
缓存失效:
当某个表正在写入数据,则这个表的缓存(命中检查,缓存写入等)将会处于失效状态.在Innodb中,如果某个事务修改了表,则这个表的缓存在事务提交前都会处于失效状态,在这个事务提交前,这个表的相关查询都无法被缓存。
如何配置缓存:
参数解释:
have_query_cache : 表示此版本mysql是