网站建设免费空间注册导航,xampp可以做网站吗,现在币圈有那些私募网站做的好,怎样联系自己建设网站文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer
磁盘中的主键索引由于天然自增#xff0c;无须磁盘的随机 I/O#xff0c;只需不断追… 文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer
磁盘中的主键索引由于天然自增无须磁盘的随机 I/O只需不断追加。但普通索引大概率无序默认情况下需要进行随机磁盘 I/O 操作效率极差 磁盘随机IOB数索引是按页存储的随机IO就是随机访问页中的数据 因此需要插入缓存Insert Buffer解决普通索引插入效率低下的问题
非聚簇索引插入的离散性
《MySQL技术内幕》中有这样一句话”B树的特性决定了非聚集索引插入的离散性“下面先稍微理解下。
create table tb_user ( id int auto_increment, name varchar(20),age int unsigned,primary key (id),key(age)) engineinnodb default charsetutf8;上面建的表中有三个字段
id自增主键age普通key等于是非聚集索引name普通字段
往里面插入几条数据后如下 此时如果插入主键索引递增由于主键索引是有序递增的连续插入的操作是连续的比如id678都依次插入到最后就行B树结构也不太会受影响因为主键索引叶子节点也是按主键顺序存储也不需要额外的磁盘随机IO比较快。
如果插入非聚簇索引二级索引age的值由于age列的数据是无序的无法做到连续的索引插入到连续的行中比如age21 22 23只能一条一条地定位和插入这就是“离散”。在非聚簇索引的B树中叶子节点存储的是非聚簇索引与主键索引的值虽然排序是按照age的大小但插入操作并不是只考虑这个顺序还是需要搜索定位到特定的**数据页innoDB 数据页就是主键索引b树的叶子节点按主键索引顺序存储**再插入插入后还要考虑数据页容量大小决定是否分裂。
总之主键索引由于自增特性插入操作也是连续的比较快非聚簇索引字段在数据页中可能是无序插入需要定位对应的数据页主键索引B树叶子结点因此插入操作是离散的相对较慢。
Insert Buffer
对于满足以下条件的索引
非聚簇索引因为聚簇索引或者说主键索引一般是自增的且唯一的插入操作连续不存在非聚簇索引的问题索引不唯一索引唯一的话每次插入还需要通过磁盘随机I/O判断插入索引值是否已存在
不直接插入到磁盘的索引叶中先判断对应的非聚簇索引是否在Buffer Pool中如果在则直接插入否则先放入Insert Buffer中然后以一定频率和辅助索引页子节点进行merge insert buffer此时通常能将多个插入合并到一个操作中因此能提高插入性能。
查看Insert Buffer信息
SHOW ENGINE INNODB STATUSINSERT BUFFER AND ADAPTIVE HASH INDEX 下面就是insert buffer的信息包括
seg size 当前Insert Buffer的大小就是多少个数据页insert buffer本身就是一个B树一个数据页16KBfree listlen 空闲列表的长度size 已经合并记录页的数量Inserts 插入的记录数merged recs 合并的插入记录数量merges 合并的次数也就是实际读取页的次数
Insert Buffer的问题
因为Insert Buffer信息也存储在buffer pool中在写密集的情况下可能会占用过多的buffer pool默认最大可以占用到1/2影响其他使用buffer pool的操作
Change Buffer
就是MySQL 5.5 之后的升级版本可以理解为对所有的表更改操作INSERT、DELETE、UPDATE都做buffer包括
Insert BufferDelete BufferPurgebuffer
原来的Insert Buffer只对插入操作做buffer
总结 Insert Buffer 就是用于提升非聚集索引页的插入性能的其数据结构类似于数据页的一个B树物理存储在共享表空间ibdata1中 。 Reference
https://cloud.tencent.com/developer/article/1735580
https://segmentfault.com/q/1010000013687775
https://zhuanlan.zhihu.com/p/333167012