MySQL的innoDB引擎

ops/2025/2/13 19:02:46/

一、逻辑存储结构
表空间:ibd文件,一个MySQL实例可以对应多个表空间,用于存储记录,索引等数据;

段:分为数据段(leaf node segment)、索引段(non-leaf node segment)、回滚段(rollback segment),innodb是索引组织表,数据段就是B+树的非叶子节点。段用来管理多个extent(区);

区:表空间的单元结构,每个区的大小都为1M,默认情况下,innoDB存储引擎页大小为16k,即一个区中一共有64个连续页;

页:是innodb存储引擎磁盘管理的最小单元,每个页的大小默认为16kb,为了保证页的连续性,innodb存储引擎每次从磁盘申请4-5个区;

行:innodb存储引擎数据是按行进行存放的;
trx_id:每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列;
rool_pointer:每次对某条记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息;

二、架构
1.内存架构
(1)缓冲池
buffer pool:缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定的频率刷新到磁盘,从而减少磁盘io,加快处理速度。

缓冲池以page页为单位,底层采用链表数据管理page。根据状态,将page分为三种类型:
free page:空闲page,未被使用;
clean page:被使用page,数据没有被修改过;
dirty page:脏页,被使用page,数据被修改过,页中数据与磁盘的数据产生了不一致;

缓冲池包含:更改缓冲区、自适应hash索引

(2)更改缓冲区(change buffer)
针对于非唯一二级索引页,在执行DML语句时,如果这些数据page没有在buffer pool中,不会直接操作磁盘,而会将数据变更存在更改缓冲区 change buffer中,在未来数据被读取时,再将数据合并并恢复到buffer pool中,再将合并后的数据刷新到磁盘中。
存在的意义:与聚集索引不同,二级索引通常是非唯一的,


http://www.ppmy.cn/ops/158106.html

相关文章

Rhel Centos环境开关机自动脚本

Rhel Centos环境开关机自动脚本 1. 业务需求2. 解决方法2.1 rc.local2.2 rc.d2.3 systemd2.4 systemd附着的方法2.5 tuned 3. 测试 1. 业务需求 一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员. 想达到的效果: 由于是非标准的apache或者nginx…

Java分布式幂等性怎么设计?

在高并发的场景的架构中,幂等性是必须得保证的。比如说支付功能,用户发起支付,如果后台没有坐幂等性校验,刚好用户手抖多点了几下,于是后台就有可能多次收到同一个请求,不做幂等性校验很容易就让用户重复支…

【分布式理论7】分布式调用之:服务间的(RPC)远程调用

文章目录 一、RPC 调用过程二、RPC 动态代理:屏蔽远程通讯细节1. 动态代理示例2. 如何将动态代理应用于 RPC 三、RPC序列化与协议编码1. RPC 序列化2. RPC 协议编码2.1. 协议编码的作用2.2. RPC 协议消息组成 四、RPC 网络传输1. 网络传输流程2. 关键优化点 一、RPC…

计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Ubuntu18 将脚本设置成自启动的几种方法

Ubuntu18 将脚本设置成自启动 在Ubuntu 18.04中,有多种方法可以将脚本设置为自启动。以下是几种常见的方法: 方法1:使用crontab 打开终端。 输入 crontab -e 命令编辑当前用户的crontab文件。 在文件末尾添加以下行来设置脚本在启动时运行…

如何修改IDEA的maven远程仓库地址

IDEA自动的maven的远程仓库地址为国外地址&#xff0c;导致下载依赖时很慢&#xff0c;通过如下方法可以将其修改为国内地址 选中模块&#xff0c;右击&#xff0c;创建setting.xml文件 添加阿里仓库地址 <mirrors><mirror><id>nexus-aliyun</id><…

AI基础 -- AI学习路径图

人工智能从数学到大语言模型构建教程 第一部分&#xff1a;AI 基础与数学准备 1. 绪论&#xff1a;人工智能的过去、现在与未来 人工智能的定义与发展简史从符号主义到统计学习、再到深度学习与大模型的变迁本书内容概览与学习路径指引 2. 线性代数与矩阵运算 向量与矩阵的…

Ansible中playbook的变量

变量 playbook的变量有以下几种 在playbook中用户自定义的变量远程主机中由Ansible收集的变量在文件模板中使用的上述两种变量把任务结果作为一个变量使用&#xff0c;叫注册变量用户在执行playbook时&#xff0c;通过命令行传入的变量&#xff0c;叫做额外变量 在playbook中…