RDS for MySQL查询缓存 (Query Cache) 的设置和使用
https://help.aliyun.com/knowledge_detail/41717.html?spm=5176.7841698.2.11.aCvOXJ
RDS for MySQL查询缓存 (Query Cache) 的设置和使用
1. 功能和适用范围
功能:
降低 CPU 使用率
降低 IOPS 使用率(某些情况下)
减少查询响应时间,提高系统的吞吐量
适用范围:
表数据修改不频繁、数据较静态
查询(Select)重复度高
查询结果集小于 1 MB
注:
- 查询缓存并不一定带来性能上的提升,在某些情况下(比如查询数量大,但重复的查询很少)开启查询缓存会带来性能的下降。
2. 原理
RDS for MySQL 对来自客户端的查询(Select)进行 Hash 计算得到该查询的Hash值,通过该Hash 值到查询缓存中匹配该查询的结果。
如果匹配(命中),则将查询的结果集直接返回给客户端,不必再解析、执行查询。
如果没有匹配(命中),则将 Hash 值和结果集保存在查询缓存中,以便以后使用。
查询涉及的任何一个表中数据发生变化,RDS for MySQL 将查询缓存中所有与该表相关的查询结果集全部释放(删除)。
3. 限制
查询必须严格一致(大小写、空格、使用的数据库、协议版本、字符集等必须一致)才可以命中,否则视为不同查询。
不缓存查询中的子查询结果集,仅缓存查询最终结果集。
不缓存存储函数(Stored Function)、存储过程(Stored Procedure)、触发器(Trigger)、事件(Event)中的查询。
不缓存含有每次执行结果变化的函数的查询,比如 now()、curdate()、last_insert_id()、rand()等。
不缓存对 mysql、information_schema、performance_schema 系统数据库表的查询。
不缓存使用临时表的查询。
不缓存产生告警(Warnings)的查询。
不缓存 Select ... lock in share mode、Select ... for update、 Select * from ... where autoincrement_col is NULL 类型的查询。
不缓存使用用户定义变量的查询。
不缓存使用 Hint - SQL_NO_CACHE 的查询。
4. 设置
4.1 参数
RDS 控制台
参数设置
query_cache_limit: 查询缓存中可存放的单条查询最大结果集、默认为 1 MB;超过该大小的结果集不被缓存。
query_cache_size: 查询缓存的大小。
query_cache_type: 是否开启查询缓存功能。
取值为 0 :关闭查询功能
取值为 1 :开启查询缓存功能,但不缓存 Select SQL_NO_CACHE 开头的查询。
取值为 2 :开启查询缓存功能,但仅缓存 Select SQL_CACHE 开头的查询。

注:
- 修改 query_cache_type 需要重启实例(修改后实例会自动重启)。
- 参数 query_cache_size 要求设置值为 1024 的整数倍,否则会提示 “参数格式错误,请重新输入”。

4.2 开启
参数 query_cache_size 大于 0 并且 query_cache_type 设置为 1 或者 2 的情况下,查询缓存开启。
4.3 关闭
设置参数 query_cache_size 为 0 或者设置 query_cache_type 为 0 关闭查询缓存。
4.4 建议
query_cache_size 不建议设置的过大。过大的的空间不但挤占实例其他内存结构的空间,而且会增加在缓存中搜索的开销。建议根据实例规格,初始值设置为 10MB 到 100 MB 之间的值,而后根据运行使用情况调整。
建议通过调整 query_cache_size 的值来开启、关闭查询缓存,因为修改 query_cache_type 参数需要重启实例生效。
查询缓存适用于特定的场景,建议充分测试后,再考虑开启,避免引起性能下降或引入其他问题。
5. 验证效果
5.1 控制台

5.2 SQL 命令
show global status like 'Qca%';

可以通过 show global status like 'Qca%' 来获取查询缓存的使用状态。
Qcache_hits :查询缓存命中次数。
Qcache_inserts:将查询和结果集写入到查询缓存中的次数。
Qcache_not_cached:不可以缓存的查询次数。
Qcache_queries_in_cache:查询缓存中缓存的查询量。
RDS for MySQL查询缓存 (Query Cache) 的设置和使用的更多相关文章
- 关闭mysql查询缓存query cache(用户测试性能)
先对query cache进行查询 mysql> show global variables like '%cache%'; 查看query_cache_size.query_cache_typ ...
- 对MySql查询缓存及SQL Server过程缓存的理解及总结
一.MySql的Query Cache 1.Query Cache MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集.MySql在实现Query Cache的 ...
- MySQL查询缓存详解
一:缓存条件,原理 MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELE ...
- 【转】MySQL查询缓存详解
[转]MySQL查询缓存详解 转自:https://www.cnblogs.com/Alight/p/3981999.html 相关文章:http://www.zsythink.net/archive ...
- MySQL查询缓存详解(总结)
MySQL查询缓存详解(总结) 一.总结 一句话总结: mysql查询缓存还是可以用用试一试,但是更推荐分布式,比如redis/memcache之流,将数据库中查询的数据和查询语句以键值对的方式存进分 ...
- 启用MySQL查询缓存
启用MySQL查询缓存能够极大地减低数据库server的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%. 查看查询缓存情况: mysql> show varia ...
- mysql查询缓存打开、设置、参数查询、性能变量意思
http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/0 ...
- mysql 查询缓存配置和查看
Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提高了性能,节省时间. 1.配置查询缓存 修改配置文 ...
- Mysql查询缓存Query_cache的功用
MySQL的查询缓存并非缓存执行计划,而是查询及其结果集,这就意味着只有相同的查询操作才能命中缓存,因此MySQL的查询缓存命中率很低,另一方面,对于大结果集的查询,其查询结果可以从cache中直接读 ...
随机推荐
- null, undefined,"",0,false是什么关系?
null本质上和0,"",false是一类东西,它们都表示一种数据类型的非值.正如0表示数字类型的非值,""表示字符类型的非值一样,null表示完全空的对象,即 ...
- HTML--使用下拉列表框进行多选
下拉列表也可以进行多选操作,在<select>标签中设置multiple="multiple"属性,就可以实现多选功能,在 widows 操作系统下,进行多选时按下Ct ...
- Spinner的样式大致简介
Spinner Spinner 是一个列表选择框,会在用户选择后,展示一个列表供用户进行选择.Spinner是ViewGroup的间接子类,它和其他的Android控件一样,数据需要使用Adapter ...
- JavaScript入门二
******函数****** **函数定义** //普通函数定义 function f1() { console.log("Hello word!") } //带参数的函数 fun ...
- python常见的加密方式
1.前言 我们所说的加密方式都是对二进制编码的格式进行加密,对应到python中,则是我妈们的bytes. 所以当我们在Python中进行加密操作的时候,要确保我们的操作是bytes,否则就会报错. ...
- Kafka的3节点集群详细启动步骤(Zookeeper是外装)
首先,声明,kafka集群是搭建在hadoop1.hadoop2和hadoop3机器上. kafka_2.10-0.8.1.1.tgz的1或3节点集群的下载.安装和配置(图文详细教程)绝对干货 如下分 ...
- S2深入.NET编程总结
不知从几何时,我也开始变得懒了,以往为了学习的那股子斗劲也早已不在,是时候反思反思了.失败的检测成绩希望可以把我唤醒. 经过总结,在本书中大概学到了这些知识: 1.如果一个类可序列化,则它的子类和包含 ...
- [ USACO 2007 OPEN ] Dining
\(\\\) \(Description\) 有\(N\)头牛,\(F\)种食物,\(D\)种饮料,每种食物和饮料只有一份. 现在已知每头牛可以吃哪些食物,可以喝哪些饮料,问最多可以让多少头牛可以同时 ...
- Centos6.4 安装bind dns 服务器
一.介绍 1)Centos6.4 64bit minimal 2) bind-9.8.2-0.30.rc1.el6_6.3.x86_64 二.安装 $ yum install -y bind bind ...
- MYSQL数据库迁移到ORACLE数据库
一.环境和需求1.环境 MySQL数据库服务器: OS version:Linux 5.3 for 64 bit mysql Server version: 5.0.45 Oracle数据库服务器: ...