mysql插入缓冲

作用:解决非聚集索引插入数据性能底下问题,提高非聚集索引的查询效率

  • 自增的id列的(插入时主键设置为null)插入会非常快,因为一般情况下不用随机读取另一个页中的记录。(类似的插入也是同理)

  • 一张表中有可能有多个非聚集的辅助索引,当数据插入时辅助索引顺序和主键不一致时,对应非聚集索引叶子节点的插入就不是顺序的了,此时插入性能就会下降。插入缓冲就是用来缓解辅助索引数据插入慢的问题。(多次插入变一次插入)

原理
  • 对于非聚集索引插入或更新操作不是每次都直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在直接插入缓冲池,不在就放一个到Insert Buffer中,然后再以一定规则合并到辅助索引叶子节点中,此时通常能将多个插入合并到一个操作中,从而提高插入性能。

使用规则
  • 索引是辅助索引

  • 索引不是唯一(如果是唯一也需要遍历,没有意义)

Change Buffer
  • Change Buffer用于存储SQL变更操作,比如Insert/Update/Delete等SQL语句;

  • Change Buffer中的每个变更操作都有其对应的数据页,并且该数据页未加载到缓存中;

  • 当Change Buffer中变更操作对应的数据页加载到缓存中后,InnoDB会把变更操作Merge到数据页上;

  • InnoDB会定期加载Change Buffer中操作对应的数据页到缓存中,并Merge变更操作;

  • innodb_change_buffer_max_size: 配置写缓冲的大小,占整个缓冲池的比例,默认值是25(标识25%),最大值是50。 写多读少的业务,才需要调大这个值。

  • innodb_change_buffering: 配置哪些写操作启用写缓冲,可以设置成all/none/inserts/deletes/purges--默认all所有。

写入索引叶子节点规则
  • 访问变更操作对应的数据页;

  • InnoDB后台定期Merge;

  • 数据库Buffer Pool空间不足;

  • 数据库正常关闭时;

  • Redo Log写满时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL插入数据的耗时受多个因素影响。其中一些因素包括数据库服务器性能,硬盘速度,网络传输速度,代码解析效率,以及MySQL的相关配置。 具体来说,以下因素可能导致MySQL插入数据的耗时增加: 1. Mysql插入缓存(bulk_insert_buffer_size):Mysql插入数据时会使用插入缓存,而较小的缓存大小可能导致频繁的刷新操作,从而增加插入数据的耗时。 2. 数据库约束条件验证:每次插入数据时,MySQL都需要验证是否违反表中的约束条件(如主键、唯一约束等),这个验证过程也会增加插入数据的耗时。 3. 索引构建:在InnoDB存储引擎中,数据通常会先写入缓存,然后写入事务日志,最后写入数据文件。这个过程中,索引的构建也会带来一定的时间消耗。 4. 事务提交模式:默认情况下,MySQL的事务自动提交模式是开启的,这意味着每次执行插入语句都会立即提交事务,这会导致频繁的事务提交,从而降低插入数据的速度。可以通过手动开启事务,并在所有插入任务完成后再提交事务来提高插入数据的效率。 5. innodb_flush_log_at_trx_commit设置:如果将innodb_flush_log_at_trx_commit设置为2,MySQL会在每次事务提交时将日志缓冲区的数据写入日志文件。然而,刷新操作(即将数据刷到磁盘)并不会立即进行,而是每秒执行一次。这种设置可能会影响插入数据的耗时。 除了以上因素,还有其他一些因素可能会对MySQL插入数据的耗时产生影响,例如服务器性能、CPU性能、硬盘速度和网络传输速度等。 综上所述,MySQL插入数据的耗时受多个因素影响,包括Mysql插入缓存、约束条件验证、索引构建、事务提交模式和innodb_flush_log_at_trx_commit设置等。优化这些因素可以提高插入数据的速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值