MySQL的查询缓存和Buffer Pool

 更新时间:2020年11月27日 08:51:36   作者:赐我白日梦  
这篇文章主要介绍了MySQL的查询缓存和Buffer Pool,帮助大家更好的理解和学习MySQL 数据库,感兴趣的朋友可以了解下

一、Caches - 查询缓存

下图是MySQL官网给出的:MySQL架构体系图。

人们常说的查询缓存就是下图中的Cache部分。

如果将MySQL分成 Server层和存储引擎层两大部分,那么Caches位于Server层。

另外你还得知道:

当一个SQL打向MySQL Server之后,MySQL Server首选会从查询缓存中查看是否曾经执行过这个SQL,如果曾经执行过的话,之前执行的查询结果会以Key-Value的形式保存在查询缓存中。key是SQL语句,value是查询结果。我们将这个过程称为查询缓存!

如果查询缓存中没有你要找的数据的话,MySQL才会执行后续的逻辑,通过存储引擎将数据检索出来。并且查询缓存会被shared cache for sessions,是的,它会被所有的session共享。

查询缓存的缺点:

只要有一个sql update了该表,那么表的查询缓存就会失效。所以当你的业务对表CRUD的比例不相上下,那么查询缓存may be会影响应用的吞吐效率。

你可以通过参数 query_chache_type=demand禁用查询缓存。并且在mysql8.0的版本中,已经将查询缓存模块删除了。

所以,你可以根据自己的情况考虑一下有没有必要禁用个功能

二、Buffer Pool

还是那句话:如果将MySQL分成 Server层和存储引擎层两大部分,那么Buffer Pool位于存储引擎层。

其实大家都知道无论是连接池也好、缓存池也好,只要是XXX池,都是为加速而设计的。比如操作系统的文件系统为了加快数据的读取速度,每次都做低效率的磁盘随机IO设计了缓冲写机制。

而Buffer Pool就是MySQL存储引擎为了加速数据的读取速度而设计的缓冲机制。下图中的灰色部分就是BufferPool的脑图。(字是真迹,非常之秀气!)

以上就是MySQL的查询缓存和Buffer Pool的详细内容,更多关于MySQL 查询缓存和Buffer Pool的资料请关注脚本之家其它相关文章!

相关文章

  • Mysql写入数据十几秒后被自动删除了如何解决

    Mysql写入数据十几秒后被自动删除了如何解决

    这篇文章主要介绍了Mysql写入数据十几秒后被自动删除了如何解决,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))

    详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))

    本篇文章是对远程连接Mysql数据库的问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Mysql数据库分库和分表方式(常用)

    Mysql数据库分库和分表方式(常用)

    本文主要给大家介绍Mysql数据库分库和分表方式(常用),涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • sql和MySQL的语句执行顺序分析

    sql和MySQL的语句执行顺序分析

    本文就sql和mysql的语句执行顺序问题向大家作了详细介绍,小编觉得挺不错的,这里分享下,供大家参考。
    2017-10-10
  • Mysql账号管理与引擎相关功能实现流程

    Mysql账号管理与引擎相关功能实现流程

    Mysql中的每一种技术都使用不同的存储机制、索引技巧、锁定水平、并且最终提供广泛的不同功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎
    2022-10-10
  • Mysql 开启Federated引擎的方法

    Mysql 开启Federated引擎的方法

    FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件
    2012-12-12
  • CentOS7.5 安装 Mysql8.0.19的教程图文详解

    CentOS7.5 安装 Mysql8.0.19的教程图文详解

    这篇文章主要介绍了CentOS7.5 安装 Mysql8.0.19的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • mysql获取随机数据的方法

    mysql获取随机数据的方法

    在mysql中获取随机数据方法很简单只要使用order by rand()即可了,但是如果你是百万级数据量,使用order by rand()获取随机数据你会等死去,下面我来介绍具体的解决办法
    2013-11-11
  • mysql 5.6.23 安装配置环境变量教程

    mysql 5.6.23 安装配置环境变量教程

    这篇文章主要为大家详细介绍了mysql 5.6.23 安装配置环境变量教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • mysql 8.0.18 压缩包安装及忘记密码重置所遇到的坑

    mysql 8.0.18 压缩包安装及忘记密码重置所遇到的坑

    这篇文章主要介绍了mysql 8.0.18 压缩包安装及忘记密码重置所遇到的坑,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论