博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL 查询缓存
阅读量:5927 次
发布时间:2019-06-19

本文共 665 字,大约阅读时间需要 2 分钟。

查询缓存:

            是指对select 语句的结果进行缓存,当下一次运行同样的select语句时,就可以直接返回数据,跳过解析,执行,优化阶段。

            1、查询缓存会跟踪查询涉及的表,如果表发生变化,相关的缓存都会失效。

            2、查询缓是否命中,是根据select 语句来定的  或是说根据select 的hash值来定的。

                例子:

                      (1)select X from table_A;    --- hash ---->  5

                      (2)select X 

                          from table_A;                ---hash -----> 9  

                      这两个select 语句在人类看来有一样的逻辑,但是MYSQL 可不这样想,它认为这两个是不一样的。

                      理由是第一个语句只有一行,第二个有两行。就算多一个空格它都会说是不一样的,它的一样与否是

                      根据hash 值来讲的。而hash 值又关联着缓存表的位置,所以第二个select 没有办法从用第一个的缓存。

                     

               

                      一致的书写风格会加速查询的速度。

            3、当查询中包涵任何不确定数据时,就不会被缓存 。如包涵new(),current_date();

            4、缓存是建立在select 语句的基础上的,而且只有刚收到SQL语句时才检查是否有对应的缓存,

                所以存储过程与子查询与之无缘了。

总结:

      它也不是‘银弹’,打个比方吧,如果对表进行了更新或插入,以前的缓存就没有用了。要命是的一个表对应的缓存一般

      不只一个。就算是这样缓存大多数据情况下还是可以提升性能。

 

转载于:https://www.cnblogs.com/JiangLe/p/4033179.html

你可能感兴趣的文章
IntelliJ IDEA系列编辑器安装GO插件
查看>>
程序员(程序媛)容易忽略的几个细节!
查看>>
git常用指令(持续更新)
查看>>
Foundation对象(字典,数组等)转换为json串
查看>>
QQ分享链接控制抓取内容
查看>>
ssh整合分解
查看>>
移动网站设计与开发的碎碎念
查看>>
图解基础认知之mybatis框架及请求过程
查看>>
Java 10 实战第 1 篇:局部变量类型推断
查看>>
go语言学习
查看>>
机器人如何懂得人类感情
查看>>
深入理解高并发下分布式事务的解决方案
查看>>
WP7有关定位服务应用审核的注意事项
查看>>
精通Spring Boot ——第十七篇:Spring Security自定义登录逻辑
查看>>
线性代数---单位矩阵和逆矩阵
查看>>
ActiveMQ 的安装
查看>>
Ajax版SSM整合前的准备工作
查看>>
【整理】Python之JIT、Django、Greenlet和Stackless
查看>>
前端ps配置
查看>>
微信开发 资料收集
查看>>