• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

(ZZ)MYSQL SQL_NO_CACHE的真个含义

mysql 搞代码 7年前 (2018-06-06) 114次浏览 已收录 0个评论

(ZZ)mysql SQL_NO_CACHE的真正含义

当我们想用SQL_NO_CACHE来禁止结果缓存时发现结果和我们的预期不一样,查询执行的结果仍然是缓存后的结果。其实,SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。
 
SQL_NO_CACHE means that the query result is not cached. It does not mean
that the cache is not used to answer the query.

You may use RESET QUERY CACHE to remove all queries from the cache and
then your next query should be slow again. Same effect if you change
the table, because this makes all cached queries invalid.

 

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)

mysql> select SQL_NO_CACHE count(*) from users where email = ‘hello’;
+———-+
| count(*) |
+———-+
| 0 |
+———-+
1 row in set (0.43 sec)

 
 
 
首先要知道Mysql中SQL_NO_CACHE的真正意思,它是The query result is not cached.(“禁止SQL结果集被缓存”),而不是“禁止从缓存中读结果集”,由此可以看出,你的第一次查询没有带SQL_NO_CACHE,所以结果集就被query cache起来了,那么此后的所有这个查询,不管是带不带上SQL_NO_CACHE都会从cache里取,所以才会看起来无效,如果要重新测试,就在查询前先执行一下”FLUSH QUERY CACHE”,清空一下query cache就行了。然后再带上SQL_NO_CACHE选项,就没问题了


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:(ZZ)MYSQL SQL_NO_CACHE的真个含义
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址