MySQL-Mysql SQL_NO_CACHE不生效的问题

MySQL-Mysql SQL_NO_CACHE不生效的问题

夜无邪 发布于 2017-10-18 字数 257 浏览 1513 回复 2

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

例如首次查询:

mysql> select count(*) from users where email = 'hello';
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (7.22 sec)

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2017-10-28 2 楼

从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;

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

瑾兮 2017-10-22 1 楼

首先要知道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选项,就没问题了