mysql数据缓存查找_使用MySQL查询缓存

021e7f3e854d83a19276bebb59b2b450.png

简介

MySQL的查询缓存是MySQL内置的一种缓存机制,可以针对sql进行缓存。比如我们发送select * from mysql.user这么一个查询,MySQL首先检索内存中是否有数据并且数据是否过期,如果没有数据或者数据已经过期就去数据库中查找,如果有数据并且没有过期就直接返回数据。对于sql的匹配规则非常简单,就是字符串的比较,只要字符串相同,那么就认为是同一个查询。这里的字符串相同并不是表示sql语义相同,而是查询的sql字符串相同,空格也不行。

查询缓存配置

查询缓存的开启在my.cnf配置文件中,修改查询缓存相关参数就可以完成。(RDS在管理后台进行配置)

参数解释

query_caceh_type

是否开启查询缓存

0 表示不开启查询缓存

1 表示始终开启查询缓存(不要缓存使用sql_no_cache)

2 表示按需开启查询缓存 (需要缓存使用 sql_cache)。

query_cache_size

给缓存分配的最大内存空间

query_cache_limit

指定单个查询能够使用的缓存大小

query_cache_wlock_invalidate

针对myisam存储引擎(所以采用非myisam引擎的就不需要考虑了),设置当有write lock在某个table上面的时候,读请求是要等待write lock释放资源之后再查询还是允许直接从query cache中读取结果,默认是OFF,可以直接从query cache中取得结果。

查看缓存状态

我们可以使用 show global status like 'Qcache%'; 来查看查询缓存的使用状态。

参数解释

Qcache_free_blocks

目前还处于空闲状态的 Query Cache 中内存 Block 数目

Qcache_free_memory

目前还处于空闲状态的 Query Cache 内存总量

Qcache_hits

命中次数

Qcache_inserts

向 Query Cache 中插入新的 Query Cache 的次数,也就是没有命中的次数

Qcache_lowmem_prunes

当 Query Cache 内存容量不够,需要从中删除老的 Query Cache 以给新的 Cache 对象使用的次数

Qcache_not_cached

没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于 query_cache_type 设置的不会被 Cache 的 SQL

Qcache_queries_in_cache

目前在 Query Cache 中的 SQL 数量

Qcache_total_blocks

Query Cache 中总的 Block 数量

单句SQL缓存

配置文件的query_caceh_type参数有三个选项。

其中0 表示不开启查询缓存,也就是说任何SQL都无法使用查询缓存。

1 表示始终开启查询缓存,也就是说所有的SQL都会被缓存。当我们认为某一项业务的SQL会频繁变化(例如利用用户坐标排序),那么我们可以使用sql_no_cache指定此SQL不进入缓存,从而减少性能开销。例如:select sql_no_cache * from user;

2 表示按需开启查询缓存,也就是说所有的SQL在不指定情况下都不会被缓存。只有使用sql_cache的SQL才会被缓存。例如:select sql_cache * from user;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值