前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >insert buffer 简介

insert buffer 简介

原创
作者头像
爱学习的羊羊
发布2025-03-07 14:58:50
发布2025-03-07 14:58:50
790
举报

insert buffer 简介

  • 解决非聚簇索引的插入性能问题 (注1)
  • insert buffer 由共享表(磁盘)+缓冲池(缓存)两部分组成
  • 共享表是B+树,且全局只有一颗B+树
  • 非叶节点是search key
  • space 表示唯一的表空间
  • marker 兼容老版本的insert buffer
  • offset 页所在的偏移量
  • 叶子节点
  • space marker offset和非叶节点中的含义一致
  • metadata中记录进入insert buffer的顺序
  • 剩余字段用来记录具体字段

insert buffer 实现原理

  • 更新/插入非聚簇索引
    • 判断插入的非聚簇索引页是否在缓冲池中,若在则直接插入
    • 若不在则构造insert buffer的非叶节点和叶节点插入到B+树中
    • 再按一定的条件进行合并(merge buffer)

延伸

  • 通过show engine innodb status可以查看缓冲信息
  • 非唯一索引写密集的情况下会导致缓冲池内存占比过高,可通过指定IBUF_POOL_PER_MAX_SIZE参数来限制insert buffer的缓冲池的最多使用内存
  • insert buffer bitmap 记录每个辅助索引页的可用空间,用来保证merge的成功率
  • merge insert buffer 合并条件
  • 辅助索引页被读到缓冲池,比如执行select操作
  • insert buffer bitmap页检查到某辅助索引页空间不足
  • master thread
  • change buffer 是insert buffer的升级版,
  • 包含插入、更新和删除三种操作
  • 只适用非聚簇索引(和insert buffer一致)

注释

注1: 插入时非聚簇索引的离线性是由于非聚簇索引的B+树结构造成的,非聚簇索引的B+树存储是非聚簇索引和实际数据直接的关联。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • insert buffer 简介
  • insert buffer 实现原理
  • 延伸
  • 注释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档