Mysql 查询缓存总结

MySQL查询缓存解释

缓存完整的SELECT查询结果,也就是查询缓存。保存查询返回的完整结果。当查询命中该缓存,mysql会立刻返回结果,跳过了解析、优化和执行阶段,

查询缓存系统会跟踪查询中涉及的每个表,如果这些表发生变化,那么和这个表相关的所有数据都将失效

命中条件

Mysql判断缓存命中的方法很简单:缓存存放在一个引用表中,通过一个哈希值引用,这个哈希值包括如下因素,即查询本身、当前要查询的数据库、客户端协议的版本等一些都有可能影响返回结果信息。

当判断查询缓存是否命中时,Mysql不会解析、正规化或者参数化的查询语句,而是直接使用Sql语句和客户端发送过来的其他原始信息(Sql)。任何字符上的不同,例如注释,任何的不同都会导致缓存不命中,所以在编写Sql语句的时候,需要特别注意这一点,通常使用统一的编码规则是一个好的习惯,在这里这个好习惯可能让你的系统运行的更快

当查询语句有一些不确定的数据时,则不会被缓存,例如白喊函数NOW()或者CURRENTDATE()的查询不会被缓存

如果查询语句中包含任何不确定的函数,那么在查询缓存中是不可能找到缓存结果的,即使之前刚刚执行这样的查询

导致没有命中条件

1、缓存碎片

2、内存不足

3、数据修改

特别注意

Mysql的查询缓存在很多时候可以提升查询性能,在使用的时候,有一些问题需要特别注意。首先,打开查询缓存对 读,写 操作都会带来额外的消耗:

1、读查询在开始之前必须先检查是否命中缓存

2、如果这个读查询可以被缓存,那么当完成执行后,Mysql若发现查询缓存中没有这个查询,会将其结果存入查询缓存,这会带来额外的系统开销

3、这对写操作也会影响,因为当向某个表写入数据的时候,Mysql必须将对应表的所有缓存都设置失效。

4、对于存储引擎InnoDB用户来说,事务的一些特性会限制查询缓存的作用。当一个语句在事务中修改某个表,Mysql会将这个表对应的查询缓存都设置失效。在事务提交前该表的查询都无法被缓存,只能在事务提交后才能被缓存。因此长时间运行的事务,会大大降低查询缓存的命中率

5、inner JOIN 和 其他连接 查询 如果其中一个表数据发生变化 则直接导致 缓存失效

缓存配置参数

query_cache_type: 是否打开缓存

可选项

1) OFF: 关闭

2) ON: 总是打开

3) DEMAND: 只有明确写了SQL_CACHE的查询才会吸入缓存

如果不想所有查询都进入查询缓存,但是又希望某些查询走查询缓存,那么可以将 query_cache_type 设置成  DEMAND ,然后在希望缓存的查询上加上SQL_CACHE。这虽然需要在查询中加入额外的语法,但是可以让你非常自由的控制那些查询需要被缓存。相反如果不希望缓存 加上SQL_NO_CACHE

MySQL缓存推荐使用吗_Mysql 查询缓存利弊相关推荐

  1. mysql 缓存优缺点_MySQL查询缓存的优缺点

    任职DBA一年多了,更正下博客. 其实MySQL8.0已经取消了查询缓存.如果是小型项目,又不想用Reids或者MC等缓存,查询结果相对固定,可以在MySQL5.7以下版本设置缓存. ######## ...

  2. mysql缓存 碎片_Mysql查询缓存碎片、缓存命中率及Nagios监控

    Mysql 的优化方案,在互联网上可以查找到非常多资料,今天对Mysql缓存碎片和命中率作了详细了解,个人作了简单整理. 一.Mysql查询缓存碎片和缓存命中率. mysql> SHOW STA ...

  3. php mysql 查询缓存_mysql 查询缓存使用详解

    MySQL server 有一个重要的特征:查询缓存(Query Cache). 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客 户端的相应结果.如果之后接收到一个同样的查询,服 ...

  4. mysql 查询缓存设置_MySQL查询缓存设置 提高MySQL查询性能

    从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提 ...

  5. MySQL数据库基础知识11,查询缓存

    目录 一.查询缓存是什么? 二.MySQL如何判断缓存命中 三.使用查询缓存需谨慎 四.如何分析和配置查询缓存 五.InnoDB和查询缓存 MySQL进阶实战系列文章 哪吒精品系列文章 一.查询缓存是 ...

  6. mysql数据库查询缓存_MySQL查询缓存与数据库管理

    MySQL查询缓存与数据库管理 上一篇 / 下一篇  2010-01-25 21:51:07 / 个人分类:MYSQL/Cache MySQL查询缓存 注意:查询缓存绝不返回过期数据. 如果一个表发生 ...

  7. mysql 查看某个表缓存情况_MySQL 查询缓存 QUERY_CACHE

    保存查询返回的完整结果.当查询命中该缓存,MySQL会立即返回结果,跳过解析.优化和执行阶段. 官方在特定环境测试结果(官方文档中有详细说明): 1.如果对某表进行简单查询,但每次查询条件都不一样时, ...

  8. mysql怎么查找列命令_MySQL查询命令-DQL

    MySQL查询命令-DQL EMP //员工表 员工编号 员工名 岗位 领导 入职日期 工资 奖金 部门编号 +-------+--------+-----------+------+-------- ...

  9. mysql 近几天内_MYSQL查询一周内的数据(最近7天的)

    select * from wap_content where week(created_at) = week(now) 如果你要严格要求是某一年的,那可以这样 查询一天: select * from ...

  10. mysql dump 到的文件_mysql查询结果导出到文件

    方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls'; Query OK, 31 rows af ...

最新文章

  1. php登录失败后,php – X尝试失败后阻止登录
  2. Github年度人气最高的TOP10 Python项目
  3. 由浅到浅入门批量渲染(三)
  4. PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)
  5. 是什么在主宰着我们自身的行动?
  6. 2020 CTF暑假夏令营培训Day2 密码学Crypto 部分笔记
  7. python中pycharm倒计时_pycharm中的快捷键和简单设置
  8. 一次性去掉Word 2013文档中所有文字下波浪线的方法
  9. 〖Python 数据库开发实战 - MySQL篇㉞〗- 综合案例 - 新闻管理系统数据库设计的基本属性
  10. Hough变换圆检测定位
  11. Word文档打印又出新方法!Spire.Doc全新代码让文档更清晰
  12. 三个经典故事告诉你:什么叫契约精神
  13. 手机上怎么把图片转成PDF?操作起来很简单
  14. 物理光学2 麦克斯韦方程组与电磁波
  15. 使用vue开发APICloud软件APP的教程
  16. 数据结构之树与二叉树
  17. 15/18位身份证号码正则表达式(详细版)
  18. iOS 设置表格的背景为透明
  19. B2C、C2C电子商务分析
  20. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-癫痫发作预测(六)

热门文章

  1. ubuntu启动时的初始化信息二
  2. IBM存储扩展柜磁盘在线扩容(一)
  3. Linux下搭建Haproxy负载均衡
  4. MySQL数据库入门:建库、建表、插入数据
  5. python qt 按钮实现拖放_[Python自学] PyQT5-控件拖拽、剪切板
  6. C#可空类型(Nullable)
  7. 10分钟学会spring代理模式以及应用原理,个人专用,不适合借鉴,请关闭文章
  8. 向视图中插入的数据能进入到基本表中去吗?_数据库调优,调的是什么及常见手法...
  9. c语言指向读取的字节数的指针,c - C语言中指针的大小 - SO中文参考 - www.soinside.com...
  10. python 并发编程实战_使用Python进行并发编程