mysql查询的cache
Mysql SQL_NO_CACHE不生效的问题
-
1 票
-

- 1224
-
我想通过SQL_NO_CACHE得知某个query查询速度,但似乎无法实现
例如首次查询:
- mysql> select count(*) from users where email = 'hello';
- +----------+
- | count(*) |
- +----------+
- | 0 |
- +----------+
- 1 row in set (7.22 sec)
再次查询可以看到其结果被缓冲:
- mysql> select count(*) from users where email = 'hello';
- +----------+
- | count(*) |
- +----------+
- | 0 |
- +----------+
- 1 row in set (0.45 sec)
- mysql> select count(*) from users where email = 'hello';
- +----------+
- | count(*) |
- +----------+
- | 0 |
- +----------+
- 1 row in set (0.45 sec)
这时候加入SQL_NO_CACHE的查询结果却是:
- mysql> select SQL_NO_CACHE count(*) from users where email = 'hello';
- +----------+
- | count(*) |
- +----------+
- | 0 |
- +----------+
- 1 row in set (0.43 sec)
为什么 SQL_NO_CACHE 完全没用?
怎么可以再次得到第一次7.22秒的查询?
-
4 票
-

- 13.87K
-
从mysql手册上看到一句话 SQL_NO_CACHE 查询结果不被缓存,我的理解是:select 语句中使用 SQL_NO_CACHE 的意义为 这次查询的结果不会被缓存,如果这条语句的结果已经被缓存过,那么还有可能将会之前的缓存结果返回。及使query_cache_type 为 ON 或 1 。
如果想查询结果不使用缓存那么可以在查询之前修改 query_cache_size :
- set global query_cache_size = 0;
然后在进行查询,之前被缓存过的语句,也将无效。
还有就是修改 query_cache_type 为 off 或 0 :
- set [global,session] query_cache_type = 0;
这样会阻止使用缓存或阻止查询结果缓存
mysql查询的cache的更多相关文章
- RDS for MySQL查询缓存 (Query Cache) 的设置和使用
https://help.aliyun.com/knowledge_detail/41717.html?spm=5176.7841698.2.11.aCvOXJ RDS for MySQL查询缓存 ( ...
- 对MySql查询缓存及SQL Server过程缓存的理解及总结
一.MySql的Query Cache 1.Query Cache MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集.MySql在实现Query Cache的 ...
- 启用MySQL查询缓存
启用MySQL查询缓存能够极大地减低数据库server的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%. 查看查询缓存情况: mysql> show varia ...
- MySQL查询执行过程
MySQL查询执行路径 1. 客户端发送一条查询给服务器: 2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果.否则进入下一阶段: 3. 服务器端进行SQL解析.预处理,再由优 ...
- mysql查询缓存打开、设置、参数查询、性能变量意思
http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/0 ...
- MySQL 缓存 Query Cache
QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...
- Mysql查询高速缓存区
为了提高查询速度,Mysql会维护一个内存区域(官方文档指出,大小至少41984B)对查询结果进行缓存,当查询时发现缓存区里有数据则直接返回结果而不用去执行sql语句. 查询命中的条件 每个缓存查询至 ...
- mysql 查询缓存配置和查看
Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提高了性能,节省时间. 1.配置查询缓存 修改配置文 ...
- MySQl 查询性能优化相关
0. 1.参考 提升网站访问速度的 SQL 查询优化技巧 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所 ...
随机推荐
- 二分法习题HDU2199
AC代码 : #include<iostream>#include<cmath>using namespace std;double y;double f(double n){ ...
- 使用AOP 使C#代码更清晰
简介 如果你很熟悉面向方面编程(AOP),你就会知道给代码增加"切面"可以使代码更清晰并且具有可维护性.但是AOP通常都依赖于第三方类库或者硬编码的.net特性来工作.虽然这些实现 ...
- js纯ajax
var XMLHttpReq; function createXMLHttpRequest() { try { XMLHttpReq = new ActiveXObject("Msxml2. ...
- rsync unison+inotify双向实时同步
rsync多线程同步 A:文件服务器 ip:10.10.1.10 B:备份服务器 ip:10.10.1.11 1.在B服务器上安装rsync软件 tar xzvf rsync-3.1.0.tar.gz ...
- Android得到视频缩略图
视频缩略图,可以通过接口类 MediaMetadataRetriever 来实现 具体可以看代码片段 public Bitmap getVideoThumbnail(String filePath) ...
- Spring 与 mybatis整合 Error parsing Mapper XML. Cause: java.lang.NullPointerException
mapper配置文件中的namespace没有填:而且namespase的值应该填为:mapper的权限定名:否则还是会抛出异常 org.springframework.beans.factory.B ...
- 【纯欧拉函数】 poj 2407
#include <cstdio> #include <iostream> using namespace std; int phi(int x) { int t=x; ;i& ...
- Android OpenGL ES(十一)绘制一个20面体 .
前面介绍了OpenGL ES所有能够绘制的基本图形,点,线段和三角形.其它所有复杂的2D或3D图形都是由这些基本图形构成. 本例介绍如何使用三角形构造一个正20面体.一个正20面体,有12个顶点,20 ...
- Hibernate 系列教程16-二级缓存
pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate- ...
- JAVA-面向对象2--继承
1. 继承的好处: 1.提高代码复用性. 2.让类与类之间产生关系,为面向对象的第三大特征 多态 提供了前提 2.java中支持单继承,不直接支持多继承,但对c++中多继承进行了改良.java通过多实 ...
