网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

#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#INNODB存储引擎之插入缓冲
本文网址:http://bjjierui.cn/article/pigoes.html

其他资讯