呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


清空mysql 查询缓存的可行方法

清空mysql 查询缓存的可行方法

对一条sql进行优化时,发现原本很慢的一条sql(将近1分钟) 在第二次运行时, 瞬间就完成了(0.00sec)

这是因为mysql对同一条sql进行了缓存,服务器直接从上次的查询结果缓存中读取数据,而不是重新分析、执行sql。

可通过如下方法清空查询缓存

reset query cache;

也可以在查询时指定不用缓存

select sql_no_cache

但是要注意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查询缓存的工作原理与优缺点
MySQL设置查询缓存提高MySQL查询性能的方法
MySQL中group by性能优于distinct
mysql 当前时间与减去一段时间函数
技术团队的死海效应

本文链接地址:http://www.hehehehehe.cn/i/800.html