问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql中合并插入缓冲 是什么意思

发布网友 发布时间:2022-04-07 14:38

我来回答

2个回答

懂视网 时间:2022-04-07 18:59

介绍重要知识点:InnoDB的插入缓冲:Mysql视频教程栏目介绍InnoDB的插入缓冲。InnoDB引擎有几个重点特性,为其带来了更好的性能和可靠性:插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neig

热心网友 时间:2022-04-07 16:07

  InnoDB存储引擎有三大特性非常令人激动,它们分别是插入缓冲、两次写和自适应哈希,本篇文章先介绍第一个特性 - 插入缓冲(insert buffer)
  在上一篇《MySQL - 浅谈InnoDB存储引擎》中,我们可以看到在InnoDB的内存中有单独一块叫“插入缓冲”的区域,下面我们详细来介绍它。
  非聚集索引写性能问题
  为了阐述非聚集索引写性能问题,我们先来看一个例子:
  mysql>create table t (
  id int auto_increment,
  name varchar(30),
  primary key (id));
  我们创建了一个表,表的主键是id,id列式自增长的,即当执行插入操作时,id列会自动增长,页中行记录按id顺序存放,不需要随机读取其它页的数据。因此,在这样的情况下(即聚集索引),插入操作效率很高。
  但是,在大部分应用中,很少出现表中只有一个聚集索引的情况,更多情况下,表上会有多个非聚集的secondary index (辅助索引)。比如,对于上一张表t,业务上还需要按非唯一的name字段查找,则表定义改为:
  mysql>create table t (
  id int auto_increment,
  name varchar(30),
  primary key (id),
  key (name));
  这时,除了主键聚合索引外,还产生了一个name列的辅助索引,对于该非聚集索引来说,叶子节点的插入不再有序,这时就需要离散访问非聚集索引页,插入性能变低。
  插入缓冲技术机制
  为了解决这个问题,InnoDB设计出了插入缓冲技术,对于非聚集类索引的插入和更新操作,不是每一次都直接插入到索引页中,而是先插入到内存中。具体做法是:如果该索引页在缓冲池中,直接插入;否则,先将其放入插入缓冲区中,再以一定的频率和索引页合并,这时,就可以将同一个索引页中的多个插入合并到一个IO操作中,大大提高写性能。回忆一下在《MySQL - 浅谈InnoDB存储引擎》中提到的master thread主循环其中的一项工作就是每秒中合并插入缓冲(可能)。
  这个设计思路和HBase中的LSM树有相似之处,都是通过先在内存中修改,到达一定量后,再和磁盘中的数据合并,目的都是为了提高写性能,具体可参考《HBase LSM树》,这又再一次说明,学到最后,技术都是相通的。
  插入缓冲的启用需要满足一下两个条件:
  1)索引是辅助索引(secondary index)
  2)索引不适合唯一的
  如果辅助索引是唯一的,就不能使用该技术,原因很简单,因为如果这样做,整个索引数据被切分为2部分,无法保证唯一性。
  插入缓冲带来的问题
  任何一项技术在带来好处的同时,必然也带来坏处。插入缓冲主要带来如下两个坏处:
  1)可能导致数据库宕机后实例恢复时间变长。如果应用程序执行大量的插入和更新操作,且涉及非唯一的聚集索引,一旦出现宕机,这时就有大量内存中的插入缓冲区数据没有合并至索引页中,导致实例恢复时间会很长。
  2)在写密集的情况下,插入缓冲会占用过多的缓冲池内存,默认情况下最大可以占用1/2,这在实际应用中会带来一定的问题。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国家GPS规范坐标系和时间系统 谁知女人心评价 英国著名留学奖学金如何申请? 英国留学如何申请英国奖学金? 去英国留学可以申请奖学金吗 1994年的运势如何? 苹果笔记本底下的图标怎么移除 苹果电脑下面一排图标苹果电脑怎么清理桌面图标 文具店取什么名字好听 最吉利旺财的文具店名字 当别人说“谢谢”,应该回答“客气”还是“不客气”? 当别人说谢谢时,我应回答是别客气还是不客气? 不客气应该的美 礼貌用语谢谢和不客气的使用应该怎么上 怎样回复别人对我说不客气应该做的 翻译:不客气(不用谢),这是我应该做的(这是我的工作),我应该做得更好 老板给发了工资,我回了个谢谢,老板回不客气,应该的,我不用回复了吧? 我帮客户做事,客户表示感谢,我回:不客气,应该做的, 公司靠的是你们!这样说合适吗 经理说 没事~ 不客气,应该的怎么回复? “不用客气”或“不用谢,这是我应该做的”用英文怎么说? " 不客气,应该的." 应该的是什么意思 《圈套》最新txt全集下载 哪里有免费的全本小说下载? 有没有能免费下载电子书的网站, 小说网站免费下载完本 免费全本小说离线下载哪个网站 现在哪个网站能下载小说 在哪里下载全本小说最好要免费的 风险金一般辞职多久可以拿到 风险金离职多久可以领取 楚楚推上市后给会员股份吗? 楚楚推上市对vIp会员有什么好处? 楚楚推399上市有分红吗? 百度上市后加入会员会有分红吗? 楚楚推真是骗子!东西真心不好我就是受害者,希望别在被骗进去了 交通疏导员是干什么的? 指挥行人过马路的人叫什么 大家明明都知道这个楚楚推是一种骗人的传销模式,为什么还有那么多人在拼命的天天宣传? 交通协管员是辅警吗 王律庄收费站招人 拼多多上市前入的会员,上市后每年分红多少? 高速公路协警必须经过安保培训吗 市民买挂牌后的原始股,待日后上市后能否每年有分红吗? 阿里游戏客户端是九游客户端吗 入职交通疏导员所具备条件是什么? 楚楚推会员有什么风险 急!高速公路上的交通疏导员、安检员是不是在高速公路上当保安呀? 交通劝导员属于哪个部门 听说加盟同世堂公司上市后可以有股份分红是真的吗? 交通疏导员应该怎么做