首页 > 数据库 >【MySQL(三)】buffer pool相关

【MySQL(三)】buffer pool相关

时间:2022-11-11 12:37:31浏览次数:66  
标签:buffer mysql pool 预读 MySQL 磁盘 老生


buffer pool是一种减少磁盘io读的机制,原理是将访问过的磁盘数据暂留在内存中,这样下次访问相同的数据就不需要读磁盘了。这个思想在平时的开发中,也经常用到,比如我们通常会在数据库前加一层memcache以及redis的缓存,防止热点数据。

mysql的内存缓存叫做buffer pool。缓存的单位是页,页是mysql管理磁盘的基本单位,也就是mysql每一次的磁盘io都是至少操作一个页的数据量。

buffer pool使用一种特定的lru算法管理缓存页。因为mysql读取磁盘有预读机制,简单来讲就是,读取一个页,也会读取相邻的若干页,因为根据经验,相邻页被使用的概率是比较高的。

由于有预读机制,导致使用传统的lru算法不合适。因为,预读的页可能没有被使用,所以不应该缓存。对于这些预读失败的页,mysql有特殊的处理机制。

简言之就是lru链表分为两部分:新生代及老生代。

新生代的尾部是老生代的开始。当一个页从磁盘被读入时,优先加入到老生代的链首,如果该页被访问到了,才将其移到新生代的链首,否则就一直在老生代中,所以,预读失败的页会优先被淘汰。

另外还有一个概念是"老生代停留时间窗口",新页进入到老生代后,只有停留时间超过一个阈值T后,才会被移到新生代,为了防止扫表导致的无效数据。(具体机制不确定。。。)

参数:

1.innodb_buffer_pool_size:buffer pool大小,貌似是尽可能大?;

2.innodb_old_blocks_pct:老生代比例;

3.innodb_old_blocks_time:老生代停留时间阈值;

参考:​​https://zhuanlan.zhihu.com/p/71698872​

标签:buffer,mysql,pool,预读,MySQL,磁盘,老生
From: https://blog.51cto.com/u_15873544/5844584

相关文章

  • 【MySQL(十九)】复制 过程
    主库将数据写入本地binlog文件中;从库连接,指定起始位置;主库的binlogdump线程开始将binlog内容发送给从库;从库的io线程将收到的binlog内容写入到本地的relaylog中;从库的sql......
  • MySQL启动报错[ERROR] InnoDB: Trying to access page number 4294967295 in space 0,
    这篇文章是原来的《记一次mysql故障处理》,但是随着mysql问题越来越多,我感觉还是集合到一篇里面比较好,也方便之后问题复现的查找一、记一次mysql故障处理最近遇到的问......
  • MySQL备库复制延迟的原因及解决办法【转】
    背景今天有同事问我主从复制延迟会影响高可用切换的RTO怎么办,这个不需要做实验,我可以直接回答,所以有了以下赶鸭子的文章,都是一线运维经验之谈,建议四连:点赞、收藏、转发......
  • 【mysql】索引
    mysql的索引是由引擎决定的。1.哈希索引,这个和哈希表是一样的原理,从关键字的哈希函数值映射到物理位置。特点是只能针对等于的查询,效率很高。2.B树索引,为关键字维护一棵b树,......
  • CentOS7 卸载 mysql8
    1、停掉mysql服务servicemysqlstop查看已安装的mysqlrpm-qa|grepmysql2、卸载mysql服务yumremovemysql-servermysqlmysql-libs再次查看是否还有......
  • MySQL复制表结构和内容到另一张表…
    1.复制表结构及数据到新表TABLE 新表SELECT * FROM 旧表2.只复制表结构到新表TABLE 新表SELECT * FROM 旧表 WHERE 1=2即:让WHERE条件不成立.方法二:(低版......
  • 12:企业规范约束-MySQL
    目录​​12.1★库表字段约束规范​​​​12.2索引规范​​​​12.3★SQL开发约束规范​​​​12.4其他规范​​12.1★库表字段约束规范字段名:​​is_vipunsignedtin......
  • 10:子查询-MySQL
    目录​​10.1子查询基本语法​​​​10.2in和notin​​​​10.3exists和notexists​​​​10.4基础结束语​​10.1子查询基本语法将一个查询的结果作为另一个查......
  • 11:高级部分-MySQL
    目录​​(一)view视图​​​​1.开场​​​​2.view视图创建、使用以及作用​​​​3.显示视图​​​​4.更新和删除视图​​​​5.视图算法:temptable,merge​​​​(......
  • 0:数据库的产生-MySQL
    目录​​0.1什么是数据库database​​​​0.2抛出问题,数据库的产生​​​​0.3数据库萌芽阶段的发展历程​​​​0.4CRUD​​​​0.5层次模型​​​​0.6网状模型​......