Mysql SQL_NO_CACHE不生效的问题

我想通过SQL_NO_CACHE得知某个query查询速度,但似乎无法实现

例如首次查询:

  1. mysql> select count(*) from users where email = 'hello';
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 0 |
  6. +----------+
  7. 1 row in set (7.22 sec)

再次查询可以看到其结果被缓冲:

  1. mysql> select count(*) from users where email = 'hello';
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 0 |
  6. +----------+
  7. 1 row in set (0.45 sec)
  8. mysql> select count(*) from users where email = 'hello';
  9. +----------+
  10. | count(*) |
  11. +----------+
  12. | 0 |
  13. +----------+
  14. 1 row in set (0.45 sec)

这时候加入SQL_NO_CACHE的查询结果却是:

  1. mysql> select SQL_NO_CACHE count(*) from users where email = 'hello';
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 0 |
  6. +----------+
  7. 1 row in set (0.43 sec)

为什么 SQL_NO_CACHE 完全没用?

怎么可以再次得到第一次7.22秒的查询?

评论 (2) • 分享 • 链接 • 2012-09-02 

  • 0
    表是 MyISAM 的吧? – 冯义军 2012-09-02
  • 0
    @冯义军 是 – 贾春春 2012-09-02
2个答案

从mysql手册上看到一句话 SQL_NO_CACHE 查询结果不被缓存,我的理解是:select 语句中使用 SQL_NO_CACHE 的意义为 这次查询的结果不会被缓存,如果这条语句的结果已经被缓存过,那么还有可能将会之前的缓存结果返回。及使query_cache_type 为 ON 或 1 。

如果想查询结果不使用缓存那么可以在查询之前修改 query_cache_size :

  1. set global query_cache_size = 0;

然后在进行查询,之前被缓存过的语句,也将无效。

还有就是修改 query_cache_type 为 off 或 0 :

  1. set [global,session] query_cache_type = 0;

这样会阻止使用缓存或阻止查询结果缓存

mysql查询的cache的更多相关文章

  1. RDS for MySQL查询缓存 (Query Cache) 的设置和使用

    https://help.aliyun.com/knowledge_detail/41717.html?spm=5176.7841698.2.11.aCvOXJ RDS for MySQL查询缓存 ( ...

  2. 对MySql查询缓存及SQL Server过程缓存的理解及总结

    一.MySql的Query Cache 1.Query Cache MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集.MySql在实现Query Cache的 ...

  3. 启用MySQL查询缓存

    启用MySQL查询缓存能够极大地减低数据库server的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%. 查看查询缓存情况: mysql> show varia ...

  4. MySQL查询执行过程

    MySQL查询执行路径 1. 客户端发送一条查询给服务器: 2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果.否则进入下一阶段: 3. 服务器端进行SQL解析.预处理,再由优 ...

  5. mysql查询缓存打开、设置、参数查询、性能变量意思

    http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/0 ...

  6. MySQL 缓存 Query Cache

    QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...

  7. Mysql查询高速缓存区

    为了提高查询速度,Mysql会维护一个内存区域(官方文档指出,大小至少41984B)对查询结果进行缓存,当查询时发现缓存区里有数据则直接返回结果而不用去执行sql语句. 查询命中的条件 每个缓存查询至 ...

  8. mysql 查询缓存配置和查看

    Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提高了性能,节省时间. 1.配置查询缓存 修改配置文 ...

  9. MySQl 查询性能优化相关

    0. 1.参考 提升网站访问速度的 SQL 查询优化技巧 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所 ...

随机推荐

  1. divide an integer into X parts (as even as possible)

    the algorithm is like this: it evenly spreads an integer N over K cells. for i = 0 to K array[i] = N ...

  2. LNMP环境的安装配置

    0.安装必要的依赖软件 如果已经安装了可能会进行升级,版本完全一致则不会进行任何操作. yum -y install bzip2-devel curl-devel freetype-devel gcc ...

  3. python socketserver实现客户端多并发

    直接看代码 server #!/usr/bin/env python # -*- coding:utf-8 -*- import socketserver import subprocess clas ...

  4. C#之控制台输入和输出

    控制台输出 C# 控制台程序一般使用 .NET Framework Console 类提供的输入/输出服务.Console.WriteLine("Hello World!"); 语 ...

  5. 把vim变成C编辑器

    转载一篇博客,地址是http://my.oschina.net/kutengshe/blog/423497

  6. Android Camera(一)

    最近老大交给了一个任务,说是要在本地视频端很够调节摄像头焦距. 碰到了一些问题: 1.手机支不支持摄像头变焦 2.系统自带摄像软件可以变焦,但是自己编写的程序不支持变焦, 这个问题网上也有很多童鞋碰到 ...

  7. php下载文件的一种方式

    <?php ob_start(); // $file_name="cookie.jpg"; $file_name="abc.jpg"; //用以解决中文不 ...

  8. <link rel="stylesheet" href="3.css"/> 链接方式

    <link rel="stylesheet" href="3.css"/> <!doctype html> <html> & ...

  9. 指针--摘自C++技术网 作者dx

    “指针是什么?”“指针就是一种数据类型.”“你确定?”“那数据类型是什么?额,这个???类型就是类型,还能怎么解释嘛.”“指针有多少种?”“指针有好多种,比如整型指针,字符指针等等.”“指针是怎么确定 ...

  10. android 在代码中使用 #ffffff 模式 设置背景色

    differentsum.setBackgroundColor(Color.parseColor("#F3733F"));