#MySQL# INNODB存储引擎之插入缓冲
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,一 前言在 mysql的insert操作中,涉及到的需要insert 的 page有聚簇索引page,唯一索引page,以及非唯一索引page 。正常情况下,对于 聚簇索引( 自增作为主键 )的ins
千家信息网最后更新 2025年01月21日#MySQL# INNODB存储引擎之插入缓冲一 前言
在 mysql的insert操作中,涉及到的需要insert 的 page有聚簇索引page,唯一索引page,以及非唯一索引page 。正常情况下,
对于 聚簇索引( 自增作为主键 )的insert来说是一个顺序 io的操作,所以效率很好,当然,绑定主键的插入也是一个随机的,但这种情况比较少。
然而,对于非唯一的二级索引来说,绝大部分的插入是随机的IO过程,对于mysql来说,随机io的开销还是相对比较大的,InnoDB为此专门做了一项工作,那就是insert buffer
二 Insert BUFFER
1> insert buffer 是 BP当中有一块内存区域,并且和数据页一样,也有自己的物理页。
2> insert buffer bitmap存储着所有页的相关信息,每个页信息占用4字节。故一个bitmap页可以管理16384个页,之后再一个bitmap管理之后的page,以此类推
1. 该页的剩余空间比例,2字节
2. 该页是否有被缓存到insert buffer B+Tree中,1字节
3. 该页是否为索引页,1字节
insert bitmap存储在 系统表空间当中。
构造过程:
1 . 非唯一的二级索引页 的insert 操作,先判断该页是否在BP中,若不在,则 通过sapce offset构造search key ,并且通过该key将该页放到 insert buffer B+Tree中。
2 若在,则直接插入该页。
Merge过程:
1. select/update/delete操作若需要读取辅助索引页,则先在bitmap page中检查insert buffer b+Tree中是否有该页,若有改页,则先从insert buffer B+TRee读取该页merge到该辅助索引页中。
2. 对于insert 操作,若该辅助索引页不在BP中,则先检测 bitmap 页判断插入该 索引记录之后 该辅助索引页的空间是否小于1/32 页大小,若小于1/32,则强制读取该索引页,即进行 上面(1) 的操作,若不小于则直接插入到insert buffer中。
3. Master Thread 每隔1s 或者 10s会有insert buffer 的merge的相关操作,随机一个insert buffer B+Tree的位置然后顺序merge N个page。
参考:
《MySQL技术内幕:InnoDB存储引擎》
在 mysql的insert操作中,涉及到的需要insert 的 page有聚簇索引page,唯一索引page,以及非唯一索引page 。正常情况下,
对于 聚簇索引( 自增作为主键 )的insert来说是一个顺序 io的操作,所以效率很好,当然,绑定主键的插入也是一个随机的,但这种情况比较少。
然而,对于非唯一的二级索引来说,绝大部分的插入是随机的IO过程,对于mysql来说,随机io的开销还是相对比较大的,InnoDB为此专门做了一项工作,那就是insert buffer
二 Insert BUFFER
1> insert buffer 是 BP当中有一块内存区域,并且和数据页一样,也有自己的物理页。
2> insert buffer bitmap存储着所有页的相关信息,每个页信息占用4字节。故一个bitmap页可以管理16384个页,之后再一个bitmap管理之后的page,以此类推
1. 该页的剩余空间比例,2字节
2. 该页是否有被缓存到insert buffer B+Tree中,1字节
3. 该页是否为索引页,1字节
insert bitmap存储在 系统表空间当中。
构造过程:
1 . 非唯一的二级索引页 的insert 操作,先判断该页是否在BP中,若不在,则 通过sapce offset构造search key ,并且通过该key将该页放到 insert buffer B+Tree中。
2 若在,则直接插入该页。
Merge过程:
1. select/update/delete操作若需要读取辅助索引页,则先在bitmap page中检查insert buffer b+Tree中是否有该页,若有改页,则先从insert buffer B+TRee读取该页merge到该辅助索引页中。
2. 对于insert 操作,若该辅助索引页不在BP中,则先检测 bitmap 页判断插入该 索引记录之后 该辅助索引页的空间是否小于1/32 页大小,若小于1/32,则强制读取该索引页,即进行 上面(1) 的操作,若不小于则直接插入到insert buffer中。
3. Master Thread 每隔1s 或者 10s会有insert buffer 的merge的相关操作,随机一个insert buffer B+Tree的位置然后顺序merge N个page。
参考:
《MySQL技术内幕:InnoDB存储引擎》
索引
字节
辅助
存储
空间
过程
非唯
信息
情况
顺序
管理
引擎
较大
为此
以此类推
位置
内存
内幕
前言
区域
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发龙哥评论
部队网络安全案例及分析
中石油网络安全客户端
服务器电源跟主板怎么连接
腾讯云服务器宝塔安装教程
服务器同步代码
正保考研数据库在线教学吗
ftp服务器端
canvas取数据库
移动医疗软件开发方案
金属材料变形抗力数据库
wow 无法连接服务器
软件开发工具最重要的信息出口是
数据库上传文件用什么
软件开发中间人回扣
品诚网络技术有限公司
肇庆市软件开发企业
普华永道网络安全团队
数据库左右连接( )
广安经开区网络安全宣传周活动
四川环保服务器散热风扇
检察机关网络安全自查报告
小米安全令牌服务器出错
ptc平台用什么数据库
手抄报网络安全内容超少
易语言 控件外部数据库
中专学网络安全可以学会吗
云服务器3d游戏几个人
广安经开区网络安全宣传周活动
我国网络安全保险产业发展白皮书