MySQL--Insert Buffer
在进行数据插入时,需要将数据插入到聚集索引和非聚集索引中,而对于非聚集索引,需要先确定数据要插入的索引页,再将索引页加载到内存中进行修改,而在业务上很难保证插入数据在非聚集索引上也是连续的,因此插入操作会引入大量随机IO操作。
Innodb存储引擎引入Insert Buffer Pool特性来对插入操作进行优化,在INSERT操作是,对非唯一索引的更新没有实时更新,而是将更新操作进行缓存,在一定条件下再触发操作将更新操作应用到索引上。
操作原理:
插入数据时判断索引页是否存于内存中:
1、索引页存在于内存中,直接更新索引页
2、索引页不存在于内存中,且满足将更新操作放入Insert Buffer Pool操作条件,将更新操作信息和索引页信息放入到Insert Buffer Pool中。
虽然"更新操作"可以被暂时缓存到Insert Buffer Pool中,但最终还是需要将"更新操作"应用到索引页上,即Merge操作,Merge操作根据触发方式分为两种:
1、主动Merge,由Innodb主线程定期后台进行,采用异步IO进行操作读取索引页面,然后进行merge。
A) 对于每秒执行一次主线程,如果过去1s之内发生的I/O小于系统I/O能力的5%,则触发一次Merge操作,merge的页面数为系统I/O能力的5%
B) 对于每10秒执行一次得主线程,必定触发一次merge操作,merge的页面数为系统I/O能力的5%
2、被动Merge,由用户操作触发:
A) Insert操作导致目标索引页的空间不足,需要进行页拆分操作,Insert Buffer只能处理单个页面,不能缓存需要拆分的索引页。
B) 当前Insert Buffer太大,需要强制进行merge操作。
C) 由于特殊原因,将"更新操作"放入Insert Buffer时出错,需要将"更新操作"直接应用到索引页上。
D) 用户操作需访问索引页,将索引页从磁盘中加载到内存,将Inser Buffer中缓存的"更新操作"进行merge。
##====================================================##
Insert Buffer优点:
1、在INSERT操作能快速返回,提高插入效率
2、在进行Merge时,可以将多个连续的页面一次读取到内存中进行merge,减少随机IO带来的性能损耗,将随机IO转换为顺序IO
##====================================================##
Insert Buffer的相关知识点
1、Innodb存储引擎使用Insert Buffer Bitmap来跟踪每个非聚集索引页的使用情况,从而推断出是否会发生页拆分的情况。
2、非聚集唯一索引无法使用Insert Buffer,因为需要在插入时需要读取索引页来确定插入数据是否唯一。
3、在MySQL 5.5中,对Insert Buffer进行增强,引入Change Buffer特性,能对INSERT/DELETE/UPDATE操作的修改信息进行缓存。
##====================================================##

MySQL--Insert Buffer的更多相关文章
- 【mysql】Innodb三大特性之insert buffer
一.什么是insert buffer insert buffer是一种特殊的数据结构(B+ tree)并不是缓存的一部分,而是物理页,当受影响的索引页不在buffer pool时缓存 secondar ...
- 全网最清楚的:MySQL的insert buffer和change buffer 串讲
目录 一.前言 二.问题引入 2.1.聚簇索引 2.2.普通索引 三.change buffer存在的意义 四.再看change buffer 五.change buffer 的限制 六.change ...
- innodb insert buffer 插入缓冲区的理解
今天在做一个大业务的数据删除时,看到下面的性能曲线图 在删除动作开始之后,insert buffer 大小增加到140.对于这些状态参数的说明 InnoDB Insert Buffer 插入缓冲,并不 ...
- InnoDB关键特性之insert buffer
insert buffer 是InnoDB存储引擎所独有的功能.通过insert buffer,InnoDB存储引擎可以大幅度提高数据库中非唯一辅助索引的插入性能. 数据库对于自增主键值的插入是顺序的 ...
- innodb 关键特性(insert buffer)
一.insert buffer 性能改善 insert buffer和数据页一样,也是物理页的一个组成部分. 在innodb存储引擎中,主键是行唯一的标识符.通常应用程序中行记录的插入顺序是按照主键递 ...
- MySQL Index--Change Buffer
Change Buffer功能 当执行INSERT/DELETE/UPDATE三类DML操作需要修改二级索引上数据时,如果需要修改的二级索引页未存在于当前Buffer Pool中,可以先将该" ...
- MySql 缓冲池(buffer pool) 和 写缓存(change buffer) 转
应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库. 操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问. M ...
- InnoDB Insert Buffer(插入缓冲 转)
一,插入缓冲(Insert Buffer/Change Buffer):提升插入性能 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写到索引页中,而是先判断插入的非聚集索引页是否在缓 ...
- 使用 xlrd 模块实现对excel 的读取、excel转json 、excel 转 mysql insert 语句
#-*- coding:utf-8 -*- # 处理 excel 中的 area 为 Mysql insert 语句 import xlrd, json, codecs, os # data = xl ...
- (转载)如何优化MySQL insert性能
(转载)http://blog.csdn.net/tigernorth/article/details/8094277 对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是 ...
随机推荐
- net core中动态给log4net添加日志类型
private static object m_Lock = new object(); /// <summary> /// 根据类型获取对应的日志操作类 /// </summary ...
- 创建表结构的sql语句
1.创建表结构 表名: ODS_PSP_DIS_DAY_CALC create table ODS_PSP_DIS_DAY_CALC ( ID CHAR(32) NOT NULL, DIS ...
- unity接入谷歌ADMob注意事项
应用不显示广告,可能是广告sdk 依赖项没有注册 dependencies { implementation fileTree(dir: 'bin', include: ['*.jar']) impl ...
- centos 7 常用工具篇
1.vmstat监控linux整体性能工具如查看命令:vmstat 1 4 2.用netstat查看网络连接,接口等信息如:netstat -an 3.dig 或者nslookup 跟踪yum解析过 ...
- buffer IO和direct IO
最近在看很多框架,redis,kafka等底层都涉及到文件IO操作的效率问题,所以查了些资料,看到这篇文章讲的比较明白些,贴出来留存. 链接地址: https://www.ibm.com/develo ...
- GUI学习之八——复选框QCheckBox的学习总结
一.描述 a.QCheckBox一般用于给用户提供若干选项中多个选择时的使用 b.控件左侧有一个方框来显示控件被选中. c.复选框是有三种状态的 二.使用 1.创建 复选框的创建和常规的按钮创建方式是 ...
- java学习(四)
学号 20189214 <Java程序设计>第四周学习总结 教材学习内容总结 枚举 枚举是JDK1.5版本新增的特性(泛型.For-each等如今被广泛应用的特性也是由JDK1.5时所新增 ...
- ----constructor 与 object----
CONSTRUCTOR constructor是一种特殊的object,同样是用来创建和声明一个类 语法规则: constructor([arguments]) { ... } 注意: 1.在类中,只 ...
- Python3 在操作excel时报PermissionError: [Errno 13] Permission denied: 'D:/workstation/yhdx_auto/config/case.xls'错误
此问题为文件被拒绝访问,主要是该文件已经被打开了.关闭此excel文件后在执行excel的相关操作就ok了.
- java将word文件转为pdf
import java.io.File; import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch; public ...