首页 > 数据库 >mysql B+ 树与 Buffer Pool

mysql B+ 树与 Buffer Pool

时间:2023-02-17 11:15:17浏览次数:28  
标签:缓存 Buffer 16KB MySQL 内存 mysql Pool

转自 https://lvwenhan.com/tech-epic/506.html

内存缓存 Buffer Pool

Buffer Pool 是在 MySQL 启动的时候,向操作系统申请的一片连续的内存空间,默认为 128MB,强烈建议任何一台 MySQL 服务器都根据自己的机器资源情况,增大配置的内存值,这玩意儿能把 MySQL 的性能提升多个数量级。

缓存池的大小

缓存池的大小由innodb_buffer_pool_size参数来管理,一般建议大家设置成系统可用内存的 75%,但是根据我的经验,对于普通的“冷热均衡”的数据库这样是合理的,因为热数据较少,但是如果你需要在短时间内(如几天)普遍地读写几乎所有表的所有数据,那这个比例最好设置在 50% 附近,否则在运行一段时间后将会爆内存(OOM 错误),MySQL 进程会被杀掉。

缓存池的基本结构

缓存池和磁盘数据一样,分为一个又一个 16KB 的页来进行管理。除了缓存“索引页”和“数据页”,缓存池里面还有 undo 页,插入缓存、自适应哈希索引、锁信息等。

虽然缓存池已经在内存中了,但是既然缓存池是一组 16KB 的页,那它就需要一个额外的内存索引来保存每一页的表空间、页号、缓存页地址、链表节点信息,这个结构叫控制块。N 个控制块和 N 个 16KB 数据页连在一起就是 Buffer Pool 占据那一段连续内存。

引入缓存池后,数据如何读写

缓存池中的 16KB 页是和磁盘上的页一一对应的,这就带来了读写两个方向的改变:

  1. 读数据时,如果该页已经在内存中了,则无需再浪费一次磁盘 IO。
  2. 写数据时,会直接将数据写入缓存中的页(不影响之后的读取),并在成功写入 redo log 之后返回成功。同时会将该页设置为脏页,等待后台进程将数据真正写入磁盘。

标签:缓存,Buffer,16KB,MySQL,内存,mysql,Pool
From: https://www.cnblogs.com/xiaodu9499/p/17129385.html

相关文章

  • MYSQL占用内存过高问题的解决结果记录
    问题:发现docker容器mysql的内存使用高,达到9个G快满了。开始按网上资料,查了以下二个方面,结果不是这二方面的问题,这里不再详述:1)连接池占用内存情况2)会话占用内存情况最......
  • 利用sshfs快速重做mysql主从
    先清空slavedata目录master:mkdir/tmp/data;sshfs-p22-oallow_other,[email protected]:/home/mysql5.7.39/data/tmp/data/;xtrabackup–defaults-file=/ho......
  • [javascript]端序(endian)和Buffer对象的read|write系列函数
    假设有如下对象:varbuf=Buffer.from("Hello.\n");其保存在内存当中的形式实际上是这样的,这里我们假设该对象的内存地址从0x00开始:地址0x000x010x020x030x04......
  • mysql 日期格式化
    SELECTDATE_FORMAT(NOW(),'%Y-%m-%d%H:%i:%s')//2023-02-1709:29:36上一个月date_format(PAY_TIME,'%Y-%m')=date_format(SUBDATE(#{data},INTERVAL1MO......
  • 怎么在命令行打开mysql?
    在命令行打开mysql的方法:首先在cmd命令行中输入“netstartmysql”;然后输入“mysql-hlocalhost-uroot-p”,回车;最后输入mysql的账号密码,回车即可打开mysql数据库。 ......
  • Nacos docker单机版 +Mysql 安装
     **确保已经安装了dockerserver查询nacos镜像dockersearchnacos[root@machine136nacos]#dockersearchnacosNAMEDESCRIPT......
  • 6. MySQL
    MySQL是一种关系型数据库,主要用于持久化存储我们的系统中的一些数据比如用户信息。什么是关系型数据库?关系型数据库(RDBMS,RelationalDatabaseManagementSystem)就是一......
  • 决战圣地玛丽乔亚Day13--Mysql性能调优以及乐观锁/悲观锁
    1.参数配置调优。 先pass2.索引调优如果使用联合索引,要遵循最左匹配原则。index(a,b,c) 如果想使用这个索引,那么必须遵循这个顺序使用。模糊查询也是要......
  • 批量数据插入MYSQL的研究
    MySQL中Innodb引擎不通插入方式对速度的影响简介最近在研究如何插入大量数据到MySQL中的Innodb数据库中,后来查阅资料发现有三种方法使用Mybatis使用JDBC使用JDBC批处......
  • Jmeter-jdbc-mysql
    1、下载驱动没驱动会报错:CannotloadJDBCdriverclass'com.mysql.jdbc.Driver'在选择驱动前,需要下载mysql-connector-java-5.1.7-bin.jar插件包,把插件包放置Jmeter\li......