辟谣SQL_NO_CACHE_weixin_33704591的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_33704591/article/details/92064515 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

辟谣SQL_NO_CACHE_weixin_33704591的博客-CSDN博客
辟谣SQL_NO_CACHE
weixin_33704591
于 2017-08-07 12:01:00 发布
461
收藏
文章标签:
数据库
python
原文链接:https://my.oschina.net/monkeyzhu/blog/1503848
版权
2019独角兽企业重金招聘Python工程师标准>>>
query cache工作原理
官方文档对query cache做了说明。 其中指出query cache为所有session共享。非频繁的表更新情况下使用,当表被修改所有相关的缓存条目都会被清除。 缓存严格区分sql语句,mysql提供query_cache_strip_comments可以忽略带有注释的语句。当前还不支持分区表。 核心参数:query_cache_type和query_cache_size 。关闭query cache需要在mysql启动时执行。
如何正确设置query cache大小
show status like "%Qcache%";
#当前cache状态
show variables like "%cache%";
#系统设置值
一开始可以参考官方文档几十M,观察当前cache使用情况,然后按需增加或减少。
是否开启query cache强烈参考下面:
线上环境到底要不要开启query cache为什么要关闭query cache,如何关闭官方文档query cache原理、注意事项、使用场景
Qc不适用的场景:
1、子查询或者外层查询;
2、存储过程、存储函数、触发器、event中调用的SQL,或者引用到这些结果的;
3、包含一些特殊函数时,例如:BENCHMARK()、CURDATE()、CURRENT_TIMESTAMP()、NOW()、RAND()、UUID()等等;
4、读取mysql、INFORMATION_SCHEMA、performance_schema 库数据的;
5、类似SELECT…LOCK IN SHARE MODE、SELECT…FOR UPDATE、SELECT..INTO OUTFILE/DUMPFILE、SELECT..WHRE…IS NULL等语句;
6、SELECT执行计划用到临时表(TEMPORARY TABLE);
7、未引用任何表的查询,例如 SELECT 1+1 这种;
8、产生了 warnings 的查询;
9、SELECT语句里加了 SQL_NO_CACHE 关键字;
SQL_NO_CACHE
这个参数字面即表达了含义,官方文档 在mysql5.6的文档中注释了一句,SQL_NO_CACHE关键词前面必须要有空格,否则依然会检查是否缓存。
让我们看些列子:
mysql> show variables like "%query_cache%";
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+----------+
开启 query_cache
mysql> show profiles;
+----------+------------+--------------------------------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------------------------------------------------------------------------------+
| 1 | 0.00099850 | select SQL_NO_CACHE count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 2 | 0.00093250 | select SQL_NO_CACHE count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 3 | 0.00095800 | select
SQL_NO_CACHE count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 4 | 0.00019600 | show profile for query |
| 5 | 0.00103800 | select count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 6 | 0.00015675 | select count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 7 | 0.00099475 | select SQL_NO_CACHE count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
| 8 | 0.00095950 | select
SQL_NO_CACHE count(*) from info_collect_keywordresult where updated_at>"2016-04-05 00:00" |
+----------+------------+--------------------------------------------------------------------------------------------------+
一些语句执行profile
mysql> show profile for query 6;
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000022 |
| Waiting for query cache lock | 0.000005 |
| init | 0.000004 |
| checking query cache for query | 0.000008 |
| checking privileges on cached | 0.000005 |
| checking permissions | 0.000012 |
| sending cached result to clien | 0.000094 |
| cleaning up | 0.000009 |
+--------------------------------+----------+
8 rows in set, 1 warning (0.00 sec)
已缓存的语句profile
mysql> show profile for query 7;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000072 |
| checking permissions | 0.000011 |
| Opening tables | 0.000025 |
| init | 0.000034 |
| System lock | 0.000011 |
| optimizing | 0.000013 |
| statistics | 0.000020 |
| preparing | 0.000017 |
| executing | 0.000004 |
| Sending data | 0.000642 |
| end | 0.000012 |
| query end | 0.000008 |
| closing tables | 0.000013 |
| freeing items | 0.000099 |
| cleaning up | 0.000016 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)
使用sql_no_cache参数后的执行profile看看到和官方文档说明无擦别。既不检查使用cache,也不写入cache
同时该参数也是实际在5.1的mysql版本上测试过。通过profile计划看出并不像某些blog所写。在有cache时,即便使用SQL_NO_CACHE也会使用缓存。
我想这其中可能题主在执行sql查询时只注意到时间变化,而产生使用cache的结论,而没有真正查看sql执行的profile,如果数据第一次加载到内存然后执行sql,必然比第二次数据已经在内存中要执行的慢。
所以sql的profile会告诉我们具体执行的过程。
mysql> show profile for query 8;
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000026 |
| Waiting for query cache lock | 0.000005 |
| init | 0.000005 |
| checking query cache for query | 0.000059 |
| checking permissions | 0.000010 |
| Opening tables | 0.000024 |
| init | 0.000033 |
| System lock | 0.000018 |
| optimizing | 0.000013 |
| statistics | 0.000021 |
| preparing | 0.000018 |
| executing | 0.000004 |
| Sending data | 0.000567 |
| end | 0.000009 |
| query end | 0.000009 |
| closing tables | 0.000012 |
| freeing items | 0.000112 |
| cleaning up | 0.000018 |
+--------------------------------+----------+
18 rows in set, 1 warning (0.01 sec)
这里的mysql版本为5.6.24官方文档对此版本说明SQL_NO_CACHE关键词前面必须要有空格,否则依然会检查是否缓存
看到确实检查了缓存但并不会使用缓存,仅仅是检查。
转载于:https://my.oschina.net/monkeyzhu/blog/1503848
weixin_33704591
关注
关注
点赞
收藏
评论
辟谣SQL_NO_CACHE
2019独角兽企业重金招聘Python工程师标准>>> ...
复制链接
扫一扫
Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE
09-10
主要介绍了Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE,需要的朋友可以参考下
Python爬虫实战(七):某讯较真辟谣小程序爬虫
最新发布
韩国麦当劳的博客
11-10
438
某讯较真辟谣小程序爬虫
参与评论
您还未登录,请先
登录
后发表或查看评论
SQL_NO_CACHE
sinat_24296421的博客
12-08
751
SQL_NO_CACHE网络上看了解释,不是很明白,自己试验了下:
结论
SQL_NO_CACHE只是不会将查询结果放进缓存,如果第一次查询时没有使用SQL_NO_CACHE,后面查询时使用SQL_NO_CACHE结果还是会从缓存中获取。
试验结果:
试验一:
1、SELECT SQL_NO_CACHE count(1) FROM `cc_member_card_main_info_0`...
mysql sqlnocache_【转】mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
weixin_34445112的博客
01-19
1025
转自:http://www.169it.com/article/5994930453423417575.html为了测试sql语句的效率,有时候要不用缓存来查询。使用SELECT SQL_NO_CACHE ...语法即可SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。目前流传的SQL_NO_CACHE不外乎两种解释:1.对当前query不使用...
【转】mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
weixin_30254435的博客
11-15
491
转自:http://www.169it.com/article/5994930453423417575.html
为了测试sql语句的效率,有时候要不用缓存来查询。
使用
SELECT SQL_NO_CACHE ...
语法即可
SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。
目前流传的SQL_NO_CACHE...
关于对MySQL的SQL_NO_CACHE的理解和用法举例
梦~'
12-31
422
转载自大佬文章:大佬文章地址
SQL_NO_CACHE的真正作用是禁止对当前查询结果做缓存,但早已经有cache的查询依然会作为结果返回给query(也就是先前已经被缓存过的查询结果,即使加了SQL_NO_CACHE,MySQL也依然会从缓存查找)
mysql> select count(*) from db;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.05 sec)
MYSQL优化(一):MySQL 查询过程、查询缓存及 SQL_CACHE与SQL_NO_CACHE的用法
架构师之路
05-08
5765
MySQL查询缓存在解析一个查询语句前,如果查询缓存是打开的,那么MySQL会检查这个查询语句是否命中查询缓存中的数据。如果当前查询恰好命中查询缓存,在检查一次用户权限后直接返回缓存中的结果。这种情况下,查询不会被解析,也不会生成执行计划,更不会执行。MySQL将缓存存放在一个引用表(不要理解成table,可以认为是类似于HashMap的数据结构),通过一个哈希值索引,这个哈希值通过查询本身、当前...
Mysql SQL_NO_CACHE
weixin_39300480的博客
08-06
544
1、
从mysql手册上看到一句话 SQL_NO_CACHE 查询结果不被缓存,我的理解是:select 语句中使用 SQL_NO_CACHE 的意义为 这次查询的结果不会被缓存,如果这条语句的结果已经被缓存过,那么还有可能将会之前的缓存结果返回。及使query_cache_type 为 ON 或 1 。
如果想查询结果不使用缓存那么可以在查询之前修改 query_cache_size :
set...
mysql no cache_【转】mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
weixin_31002061的博客
01-18
150
转自:http://www.169it.com/article/5994930453423417575.html为了测试sql语句的效率,有时候要不用缓存来查询。使用SELECT SQL_NO_CACHE ...语法即可SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。目前流传的SQL_NO_CACHE不外乎两种解释:1.对当前query不使用...
mysql sqlnocache_Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE
weixin_29358053的博客
01-19
86
场景产品中有一张图片表pics,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表结构很简单,主要字段:user_id 用户IDpicname 图片名称smallimg 小图名称一个用户会有多条图片记录,现在有一个根据user_id建立的索引:uid,查询语句也很简单:取得某用户的图片集合:select picname, smallimg from pics wh...
关于SQL_NO_CACHE
weixin_33736649的博客
12-17
51
2019独角兽企业重金招聘Python工程师标准>>>
...
MySQL 高性能优化
muwenbofx的博客
03-03
236
1. LIMIT优化
使用limit随着offset增大,查询的速度会越来越慢。
limit查询会把前边的数据都取出来,比如limit 100000, 10时会把前10万条数据取出找到对应的位置,再取10条数据。因此你的offset的值越大查询的数据就越多
所以我们就需要对limit进行优化:
测试数据共计约100W条
1. 未优化
SELECT SQL_NO_CACHE * FROM `ceshi` ORDER BY `id` DESC LIMIT 900000, 10;
2. 子查询优化
超级全面的MySQL优化面试解析
Java笔记虾
09-02
9480
作者:Anwen
juejin.im/post/5c6b9c09f265da2d8a55a855
推荐阅读(点击即可跳转阅读)
SpringBoot内容聚合
面试题内容聚合
设计模式内容聚合
Mybatis内容聚合
多线程内容聚合
本文概要
概述
为什么要优化
系统的吞吐量瓶颈往往出现在数据库的访问速度上
随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相...
MYSQL SQL_NO_CACHE的真正含义
wmsjlihuan的专栏
11-14
2723
当我们想用SQL_NO_CACHE来禁止结果缓存时发现结果和我们的预期不一样,查询执行的结果仍然是缓存后的结果。其实,SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。
mysql> select count(*) from users where email = 'hello';
+----------+
| count(*)
mysql 查询关闭缓存SQL_NO_CACHE
热门推荐
pengone的博客
11-24
1万+
SELECT SQL_NO_CACHE * form table
mysql no cache,MySQL 8警告:不建议使用SQL_NO_CACHE
weixin_34727107的博客
01-18
157
When issuing a statement to MySQL8 server:SELECT SQL_NO_CACHE *FROM ;I get this warning:Warning, 1681, 'SQL_NO_CACHE' is deprecated and will be removed in afuture release.I would like to ask if there ...
mysql让sql查询不走缓存的方法
AKA-5xx的博客
04-07
2909
查询时增加一个SQL_NO_CACHE指令
SELECT SQL_NO_CACHE field_1, field_2, ... from table_1;
mysql查询不使用缓存_mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
weixin_31230841的博客
01-19
3664
为了测试sql语句的效率,有时候要不用缓存来查询。使用SELECT SQL_NO_CACHE ...语法即可SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。目前流传的SQL_NO_CACHE不外乎两种解释:1.对当前query不使用数据库已有缓存来查询,则当前query花费时间会多点2.对当前query的产生的结果集不缓存至系统query c...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
weixin_33704591
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
150
原创
周排名
182万+
总排名
109万+
访问
等级
7079
积分
7815
粉丝
280
获赞
29
评论
1325
收藏
私信
关注
热门文章
Android中读取文本文件中内容的方法
23094
R语言读取大数据 data.table包 fread函数
10372
SVN查看所有日志提交记录
10099
Error creating bean with name 'objectMapperConfigurer' defined in class path resource
8880
查看struts版本号
8202
最新评论
因子分析factor analysis_spss运用_python建模(推荐AAA)
小白兔的小白菜:
博主的书命叫什么呀?
清除ListBox的列表项(删除所有项目)
Quanticoo:
ListBox1.Clear
Nearest neighbor graph | 近邻图
MagicMessi:
兄弟们没用,抄的,不用看,
手把手教你实现一个简单的编译器
IT利刃出鞘:
深得人心,正如古人云:别裁伪体亲风雅,转益多师是汝师。
清除ListBox的列表项(删除所有项目)
计算机Bug专业:
你转载别人连备注都不打?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
matlab练习程序(寻找凸包,Graham扫描法)
C#实现Windows 服务的制作安装和删除[转]
2019年405篇
2018年653篇
2017年904篇
2016年546篇
2015年440篇
2014年316篇
2013年298篇
2012年254篇
2011年194篇
2010年141篇
2009年102篇
2008年77篇
2007年64篇
2006年42篇
2005年24篇
2004年12篇
2000年1篇
目录
目录
最新文章
matlab练习程序(寻找凸包,Graham扫描法)
C#实现Windows 服务的制作安装和删除[转]
2019年405篇
2018年653篇
2017年904篇
2016年546篇
2015年440篇
2014年316篇
2013年298篇
2012年254篇
2011年194篇
2010年141篇
2009年102篇
2008年77篇
2007年64篇
2006年42篇
2005年24篇
2004年12篇
2000年1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值