MySQL中的Buffer Pool

这篇具有很好参考价值的文章主要介绍了MySQL中的Buffer Pool。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

        Buffer Pool是数据库的一个内存组件,里面缓存了磁盘上的真实数据,然后我们的Java系统对数据库执行的增删改操作,其实主要就是对这个内存数据结构中的缓存数据执行的。我们先来看一下下面的图,里面就画了数据库中的Buffer Pool内存组件。

MySQL中的Buffer Pool,MySQL,mysql,数据库

 二、数据页

        接着我们来看下一个问题,假设现在我们的数据库中一定有一片内存区域是Buffer Pool了,那么我们的数据是如何放在Buffer Pool中的?
        我们都知道数据库的核心数据模型就是表+字段+行的概念,也就是说我们都知道数据库里有一个一个的表,一个表有很多字段,然后一个表里有很多行数据,每行数据都有自己的字段值。所以大家觉得我们的数据是一行一行的放在Buffer Pool里面的吗?
        这就明显不是了,实际上MySQL对数据抽象出来了一个数据页的概念,他是把很多行数据放在了一个数据页里,也就是说我们的磁盘文件中就是会有很多的数据页,每一页数据里放了很多行数据,如下图所示。

MySQL中的Buffer Pool,MySQL,mysql,数据库

        所以实际上假设我们要更新一行数据,此时数据库会找到这行数据所在的数据页,然后从磁盘文件里把这行数据所在的数据页直接给加载到Buffer Pool里去。
        也就是说,Buffer Pool中存放的是一个一个的数据页,如下图。

MySQL中的Buffer Pool,MySQL,mysql,数据库

三、磁盘上的数据页和Buffer Pool中的缓存页是如何对应起来的?

        实际上默认情况下,磁盘中存放的数据页的大小是16KB,也就是说,一页数据包含了16KB的内容。
        而Buffer Pool中存放的一个一个的数据页,我们通常叫做缓存页,因为毕竟Buffer Pool是一个缓冲池,里面的数据都是从磁盘缓存到内存去的。
        而Buffer Pool中默认情况下,一个缓存页的大小和磁盘上的一个数据页的大小是一一对应起来的,都是16KB。
        所以我们看下图,我给图中的Buffer Pool标注出来了他的内存大小,假设他是128MB吧,然后数据页的大小是16KB。

MySQL中的Buffer Pool,MySQL,mysql,数据库

四、缓存页对应的描述信息是什么?

        接着我们要了解下一个概念,对于每个缓存页,他实际上都会有一个描述信息,这个描述信息大体可以认为是用来描述这个缓存页的。
        比如包含如下的一些东西:这个数据页所属的表空间、数据页的编号、这个缓存页在Buffer Pool中的地址以及别的一些杂七杂八的东西。
        每个缓存页都会对应一个描述信息,这个描述信息本身也是一块数据,在Buffer Pool中,每个缓存页的描述数据放在最前面, 然后各个缓存页放在后面。所以此时我们看下面的图,Buffer Pool实际看起来大概长这个样子。

MySQL中的Buffer Pool,MySQL,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-677250.html

到了这里,关于MySQL中的Buffer Pool的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】change buffer,buffer pool,redo log,bin log,undo log的作用

    当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。 在下次查询需要访问这个数据页的时候,将数据页

    2024年02月16日
    浏览(40)
  • mysql8.0 性能优化配置 innodb_buffer_pool_size

    15.5.1 Buffer Pool 缓冲池是主内存中的一个区域,InnoDB在访问表和索引数据时会在该区域进行缓存。缓冲池允许直接从内存访问频繁使用的数据,这加快了处理速度。在专用服务器上, 通常会将高达80%的物理内存分配给缓冲池。 为了提高高容量读取操作的效率,缓冲池被划分为

    2024年02月09日
    浏览(35)
  • 【MySQL 数据库】11、学习 MySQL 中的【锁】

    锁是计算机协调多个进程或线程并发访问某一资源的机制 在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题 锁冲突是影响数据库并发访问性能的一个

    2024年02月08日
    浏览(52)
  • mysql undo log、redo log、binlog、mvcc、Buffer Pool的关系

            MySQL中的undo log、redo log、binlog和MVCC(多版本并发控制)是数据库管理系统中的 重要概念,它们各自有不同的作用和关系。 Buffer Pool(缓冲池): 作为InnoDB存储引擎的核心组件,Buffer Pool用于缓存从磁盘读取的数据页。所有的数据修改首先发生在内存中的缓冲池里

    2024年02月02日
    浏览(41)
  • MySQL 8.0 Reference Manual(读书笔记70节--InnoDB Buffer Pool Configuration)

    When increasing or decreasing innodb_buffer_pool_size , the operation is performed in chunks. Chunk size is defined by the innodb_buffer_pool_chunk_size configuration option, which has a default of 128M.-----innodb_buffer_pool_size的扩容和缩容,都是以innodb_buffer_pool_chunk_size为单位进行的,其默认为128M 。 Buffer pool size must always

    2024年03月24日
    浏览(50)
  • 【MySql】如何重置MySQL数据库表中的id

     方法一:原来的id取消自增和主键,只用于表格的排序。 新插入一个id2,自然会根据自增重新排列。删除id,id2改id即可。 使用这种方法不影响表中数据,从1递增开始递增 方法二:清空表,并重置id 一次性删除所有数据,不可恢复,无法回滚  方法三: 方法四:

    2024年02月12日
    浏览(48)
  • 【数据库】MySQL中的锁机制

    本系列包含: 【数据库】MySQL 的存储引擎 【数据库】B 树、B+ 树、索引 【数据库】从事务到锁机制 【数据库】MySQL 中的锁机制 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。 MySQL 数据库由于其自

    2024年02月04日
    浏览(49)
  • docker中的mysql数据库备份

             1、查看容器 docker ps 2、进入容器 docker exec -it 容器id /bin/bash 3、备份数据 mysqldump 数据库名称 -uroot -p /root/**.sql 回车输入数据库密码: 4、退出容器 exit 5、把容器中的文件拷贝出来 docker cp 容器id:/root/**.sql /root/ 例如: mysqldump test_db -uroot -p /root/test_db_0110.sql 常见错

    2024年02月12日
    浏览(49)
  • MySQL 8.0 Reference Manual(读书笔记72节--InnoDB Buffer Pool Configuration (3))

    主要内容为【热启动】,就是把之前常用的内存数据,按照划定的比例快速重新加载到内存中。 To reduce the warmup period after restarting the server, InnoDB saves a percentage of the most recently used pages for each buffer pool at server shutdown and restores these pages at server startup. The percentage of recently used pa

    2024年03月24日
    浏览(46)
  • MySQL 8.0 Reference Manual(读书笔记71节--InnoDB Buffer Pool Configuration (2))

    【目的是未来提高并发,减少竞争】 For systems with buffer pools in the multi-gigabyte range, dividing the buffer pool into separate instances can improve concurrency, by reducing contention as different threads read and write to cached pages. This feature is typically intended for systems with a buffer pool size in the multi-gigabyte range. Mu

    2024年03月24日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包