MySql学习笔记——查询缓存(十七)

  • Query Cache:是MySql层面提供的数据缓存,用于缓存select查询的结果

用法:在配置文件中开启缓存

  • my.ini(win)/my.cnf(linux)
  • 在[mysqlId]中加入query_cache_type = 0/1/2
    其中0表示关闭
    其中1表示开启,是默认缓存的,我们也可以增加sql-no-cache来放弃缓存
    其中2表示开启,但是默认是不开启的,需要增加sql-cache来执行缓存
    一般使用2为主
    MySql学习笔记——查询缓存(十七)
    配置完毕后需要长期后生效,重启后,在客户端使用
    show variables like ‘query_cache_type’ 查看
    MySql学习笔记——查询缓存(十七)
    demand表示2的意思

在客户端设置缓存大小

通过配置项query_cache_size来修改,单位是字节,可以将其修改,理论上没有上限但受限于物理内存
MySql学习笔记——查询缓存(十七)
MySql学习笔记——查询缓存(十七)

查询缓存结果

  • query_cache_type = 1:直接执行即可
  • query_cache_type = 2
    MySql学习笔记——查询缓存(十七)
    MySql学习笔记——查询缓存(十七)
    执行后续的相同查询,时间变短!

重置缓存

  • reset query cache 完成缓存的清空
  • MySql学习笔记——查询缓存(十七)

注意:

  • 应用程序不应该关注查询缓存的使用情况,可以使用但不能由查询缓存决定业务逻辑

缓存失效

当数据表改动时,基于该数据表的任何缓存都会被删除,这是表层面的管理
MySql学习笔记——查询缓存(十七)

  • 即动态数据不能被缓存,所以我们几乎不用,因为缓存失效率太高了
  • 缓存检索依赖于sql语句的字符串语法规则,大小写,空格等都会导致缓存失效
    例:5前面多了一个空格
    MySql学习笔记——查询缓存(十七)
    例:limit改成大写
    MySql学习笔记——查询缓存(十七)