mysql查询缓存问题query cache

wenjie4892543 2016-06-29 03:18:08

mysql默认 query_cache 是打开的
你使用 show global variables like '%query_cache%';

确认一下有没有打开,如果打开了。第一次查询读数据文件,第二次就会走query_cache,所以就会很快。当然 ,如果数据更新了,要重新再缓存。

第二种情况 ,表引擎使用innodb.第一次查询也会走数据文件,第二次直接走buffer_pool,也比直接查询数据文件要快

上面的说法是否正确。
本人测试:
--开启查询缓存 在my.ini文件中配置 并重启服务
query_cache_type = 1;
query_cache_size = 134217728;

select * from ccp_usbinforep 语句条数:145011条
--第一次执行语句用时1.181s; 第二次执行用时0.265s
Qcache_hits 为 211 而且会增加说明是在使用查询缓存

--关闭查询缓存 在my.ini 中配置
query_cache_size=0;
query_cache_type = 0;
select * from ccp_usbinforep 语句条数:145011条
第一次执行语句用时0.294s;第二次执行用时0.283s
Qcache_hits为0
以上实验说明,好像mysql缓存不管怎么配置对sql查询的影响时间影响不大,那么配置的意义在于什么呢。
或者以上我哪些配置和理解错误?

如果缓存起作用,就用缓存,缓存关闭就是要表引擎 那么有没缓存影响大么。请大家简单说下自己的理解。3q
...全文
289 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
大雨将至 2016-06-29
  • 打赏
  • 举报
回复
query cache是第一道缓存,命中则直接返回,否则进入存储引擎层面处理 关掉query cache,直接进入到存储引擎层面,innodb本身也是有缓存机制的 都是从内存中取结果,执行效率差别不大
wenjie4892543 2016-06-29
  • 打赏
  • 举报
回复
上面说了关掉query cache对我目前的性能来说好像关系不大。我想了解下原理
大雨将至 2016-06-29
  • 打赏
  • 举报
回复
query cache是服务器级别的,而buffer_pool是存储引擎级别的,也就是innodb专用的。myisam用的是key buffer 如果你的数据库以innodb表为主,可以把buffer_pool设置的大一些,对性能调优不是很有经验的话先关掉query cache
wenjie4892543 2016-06-29
  • 打赏
  • 举报
回复
查询时,数据库引擎会判断,如果数据在内存中,则会从内存读取数据,如果数据不在内存在,则先从硬盘读到内存,然后再供查询。 所以第一次查的时候,根据你的语句,数据库引擎会把一些数据从硬盘读到内存,第二次再查的时候,就从内存读数据,就快了很多了搜索。 如果这是正确的,那么mysql的缓存有什么意义。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧