插入流程可以简化为下图 。
其中:
- 首先进行数据行格式转换
- 然后定位要插入的位置
- 最后进行插入操作
类似的,数据页分为两种形式,包括物理页(block)、内存页(page) 。
通过 B+ 树索引进行查找(lookup)是最为常见的操作,具体通过游标实现 。游标分为三种类型,包括 B-tree cursor、page cursor、persistent cursor 。
存取数据时需要进行行格式的转换 , 原因是 IO 时使用二进制,内存操作时使用逻辑记录 。
以插入数据为例,主要流程为:
- 首先进行数据行格式转换
- 然后定位要插入的位置,基于 cursor 实现
- 最后进行插入操作
- 首先从 byte 转换成 dtuple_t* row,其中保存完整的行数据;
- 然后将 dtuple_t* row 转换成 dtuple_t* entry,其中保存每个索引的列数据;
- 最后将 dtuple_t* entry 转换成 byte,用于写入文件 。
- dtuple_t结构体中保存逻辑记录,也就是索引元组,其中包括dfield_t;
- dfield_t结构体中保存字段信息,dfield_t::data中保存真实列数据的指针;
- page_cur_t结构体中保存查询得到的记录 rec,其中包括buf_block_t;
- buf_block_t结构体中保存数据页指针 frame,其中包括buf_page_t 。
- row format
- cursor
- block
- 《MySQL 内核 InnoDB 存储引擎》
- 《MySQL 运维内参》
- InnoDB --insert 操作分析
- InnoDB:B-tree index(1)
- InnoDB:B-tree index(2)
- InnoDB:Buffer Pool
- MySQL · 源码分析 · 一条insert语句的执行过程
- MySQL · 内核分析 · InnoDB主键约束和唯一约束的实现分析
【MySQL 记录、页、索引的数据结构简析】
推荐阅读
- MySQL:级联从库延迟数据库的延迟计算问题
- 提醒!微信、支付宝这个功能,建议关闭
- 支付宝2023年度报告发布,多巴胺经济、小攒青年、万事打卡成关键词
- 怎么减双下巴 怎么减双下巴最快最有效
- 驻点是什么意思 驻店是什么意思
- 电热水器安装方法及维修技巧
- 安顺十佳特色美食,安顺美食排名前十名
- 竹子是? 竹子实际是什么
- 整容脸、演戏烂,关系户三个字直接写在剧版《三大队》女六号脸上
- 裤腿大了怎么办 裤腿很大怎么办
