范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MySQL中的这个池子,强的一批

  Mysql 中数据是要落盘的,这点大家都知道。读写磁盘速度是很慢的,尤其和内存比起来更是没的说。但是,我们平时在执行 SQL 时,无论写操作还是读操作都能很快得到结果,并没有预想中的那么慢。
  可能你会说我有索引啊,有索引当然快了。但是铁子,索引文件也是存储在磁盘上的,查找过程会产生磁盘 I/O。如果同时对某行数据进行多次操作,那岂不是要重复产生很多次磁盘 IO 吗?
  可能你想到了,那我把数据存在内存里不就可以了吗?内存速度比磁盘快,这准没毛病。没错,那该怎么存呢? 这就是我们今天所要讲的主题——缓冲池(buffer pool)。
  各位看官,请跟我来~
  图注:思维导图初识缓冲池
  上边我们提到过了,执行 SQL 对某一行进行操作时,总不能每次都直接进行磁盘操作吧。好歹有个缓冲地带,不然每次都深入老巢这谁受得了。
  这不缓冲池就应运而生了,简单来说就是一块内存区域。它存在的原因之一是为了避免每次都去访问磁盘,把最常访问的数据放在缓存里,提高数据的访问速度。
  了解了它的作用,接下来让我们先来看下缓冲池在整个 Mysql 架构里处于什么样的地方,有一个宏观的认识。
  我们再来看看它的内部组成部分。在缓冲池中,除数据页和索引页外还有多种类型:
  缓冲池的应用
  缓冲池你也了解了,可能此时你最关注的是它在 SQL 执行时起了一个什么样的作用。上篇文章中我们简单的提到过一条 SQL 语句的执行过程,但并未涉及到缓冲池相关的问题。这期我们仍是以一条 SQL 来作为切入点。
  当一条 SQL 执行的时候,如果是读操作,要查找的数据所在的数据页在内存中时,则将结果返回。否则会把对应的数据页加载到内存中,然后再返回结果。
  同样对于写操作来说。如果要修改的行所在的数据页在内存中,则修改后返回对应的结果(当然还有后续操作)。如果不在的话,则会从磁盘里将该行所对应的数据页读到内存中再进行修改。
  好了,现在让我们回到开始时候的问题。为什么操作磁盘慢,但是 SQL 执行却不慢呢。到这里相信你也差不多知道了吧。
  缓冲池的存在,很大程度减少了磁盘 I/O 带来的开销。要操作的数据行所在的数据页如果存在于缓存中的话,就不需要从磁盘中进行读取。这样在执行后就可以很快拿到结果。缓冲池的预读机制
  我们可以看出来,只要不存在或减少磁盘 I/O,执行速度自然就会变快。那么对于加载数据页这种无法避免的磁盘 I/O 来说是否有更好的方式呢?既然避免不了,那减少磁盘 I/O 的次数总可以吧?
  这就是我们要讲的 Mysql 中「预读」的新特性,它是 Innodb 通过在缓冲池中提前读取多个数据页来优化 I/O 的一种方式。因为磁盘读写的时候,是按照页的方式来读取的(你可以理解为固定大小的数据,例如一页数据为 16K),每次至少读入一页的数据,如果下次读取的数据就在页中,就不用再去磁盘上读取了,从而减少了磁盘 I/O。
  可以在命令行通过如下命令查看对应的页大小:
  缓冲池的空间管理
  你可能会有疑问,缓冲池这么洋气的东西,为什么不把所有的数据都放到缓冲池里呢?这样速度岂不是美滋滋,放到磁盘里慢的跟老牛拉车一样。
  哎,哥,醒醒,抛开内存的易失性不谈,缓冲池也是有大小限制的。那你可能又有疑惑了,既然缓冲池有大小限制,那我每次都读入的数据页怎么来管理呢。别的数据页都占了地儿了,哪有我的位置?
  这里我们来聊聊缓冲池的空间管理,其实对缓冲池进行管理的关键部分是如何安排进池的数据并且按照一定的策略淘汰池中的数据,保证池中的数据不"溢出",同时还能保证常用数据留在池子中。
  传统 LRU 淘汰法
  缓冲池是基于传统的 LRU 方法来进行缓存页管理的,我们先来看下如果使用 LRU 是如何管理的。
  LRU,全称是 Least Recently Used,中文名字叫作「最近最少使用」。从名字上就很容易理解了。
  这里分两种情况:(1)缓存页已在缓冲池中
  这种情况下会将对应的缓存页放到 LRU 链表的头部,无需从磁盘再进行读取,也无需淘汰其它缓存页。
  如下图所示,如果要访问的数据在 6 号页中,则将 6 号页放到链表头部即可,这种情况下没有缓存页被淘汰。
  (2)缓存页不在缓冲池中
  缓存页不在缓冲中,这时候就需要从磁盘中读入对应的数据页,将其放置在链表头部,同时淘汰掉末尾的缓存页
  如下图所示,如果要访问的数据在 60 号页中,60 号页不在缓冲池中,此时加载进来放到链表的头部,同时淘汰掉末尾的 17 号缓存页。
  是不是看上去很简单,同时也能满足缓冲池淘汰缓存页的方法?但是我们来思考几个问题:预读失效
  上面我们提到了缓冲池的预读机制可能会预先加载相邻的数据页。假如加载了 20、21 相邻的两个数据页,如果只有页号为 20 的缓存页被访问了,而另一个缓存页却没有被访问。此时两个缓存页都在链表的头部,但是为了加载这两个缓存页却淘汰了末尾的缓存页,而被淘汰的缓存页却是经常被访问的。这种情况就是预读失效,被预先加载进缓冲池的页,并没有被访问到,这种情况是不是很不合理。缓冲池污染
  还有一种情况是当执行一条 SQL 语句时,如果扫描了大量数据或是进行了全表扫描,此时缓冲池中就会加载大量的数据页,从而将缓冲池中已存在的所有页替换出去,这种情况同样是不合理的。这就是缓冲池污染,并且还会导致 MySQL 性能急剧下降。冷热数据分离
  这样看来,传统的 LRU 方法并不能满足缓冲池的空间管理。因此,Msyql 基于 LRU 设计了冷热数据分离的处理方案。
  也就是将 LRU 链表分为两部分,一部分为热数据区域,一部分为冷数据区域。
  当数据页第一次被加载到缓冲池中的时候,先将其放到冷数据区域的链表头部,1s(由 innodb_old_blocks_time 参数控制) 后该缓存页被访问了再将其移至热数据区域的链表头部。
  可能你会有疑惑了,为什么要等 1s 后才将其移至热数据区域呢?你想想,如果数据页刚被加载到冷数据区就被访问了,之后再也不访问它了呢?这不就造成热数据区的浪费了吗?要是 1s 后不访问了,说明之后可能也不会去频繁访问它,也就没有移至热缓冲区的必要了。当缓存页不够的时候,从冷数据区淘汰它们就行了。
  另一种情况,当我的数据页已经在热缓冲区了,是不是缓存页只要被访问了就将其插到链表头部呢?不用我说你肯定也觉得不合理。热数据区域里的缓存页是会被经常访问的,如果每访问一个缓存页就插入一次链表头,那整个热缓冲区里就异常骚动了,你想想那个画面。
  那咋整呢?Mysql 中优化为热数据区的后 3/4 部分被访问后才将其移动到链表头部去,对于前 1/4 部分的缓存页被访问了不会进行移动。
  好了,到这里关于 buffer pool 的知识就讲完了。这期里我们讲了 buffer pool 能使 SQL 执行变快的原因,同时还讲了有关 buffer pool 空间的管理方式。欢迎在留言区里进行讨论。总结
  缓冲池的应用缓冲池很大程度减少了磁盘 I/O 带来的开销,通过将操作的数据行所在的数据页加载到缓冲池可以提高 SQL 的执行速度。
  缓冲池的预读机制为了减少磁盘 I/O,Innodb 通过在缓冲池中提前读取多个数据页来进行优化,这种方式叫作预读。
  缓冲池的空间管理传统的LRU方法对于缓冲池来说,会导致预读失效和缓冲池污染两种情况,因此这种传统的方式并不适用缓冲池的空间管理。基于对 LRU 方法的优化,Msyql 设计了冷热数据分离的处理方案,将LRU链表分为热数据区和冷数据区两部分,这样就可以解决预读失效和缓冲池污染的情况。

八十年代的电视机都有哪些牌子?哪个好用?陕西省彩电产业是从上世纪80年代中期才开始布局和启动的,1984年底,陕西黄河机器厂首家引进了日本彩电生产线,黄河彩电诞生。1985年,电子工业部在全国同时批准了57条彩电生产线,iPhoneSE3发布时间已定,A15芯片5G6。1寸屏幕,iPhone13不香了对于苹果旗下的iPhoneSE系列机型,相信大家都不陌生,虽然其知名度不如一年一度的iPhone数字旗舰,但往往也能获得非常出色的销量成绩。只可惜这么多年过去了,苹果只推出两款iP联发科天玑1200和骁龙870差距大吗?大家好我是甜童,昨天有位粉丝私信我说红米k40游戏增强版的天玑1200和标准版的骁龙870差别大不大,他个人更喜欢游戏增强版想让我聊聊天玑1200和骁龙870差距大不大,今天甜童就三个月后跑半马的训练计划要怎么安排?一般来说没有跑步经验的人,半马准备半年,全马准备1年比较好。但只求完赛的话,3个月也是可以搞定半马的。半马的关门时间是3小时,也有3小时15分关门的。不管是那个目标,跑步都要求循序从5299跌至3499元,骁龙88818GB256GB5500mAh,还有144Hz高刷自从麒麟芯片被打压之后,华为的手机市场份额出现了明显的下滑,随着时间的推移,小米OPPOvivo苹果荣耀成为了国内手机市场竞争最激烈的五大品牌。毫不夸张地说,这几个品牌几乎占据了国造手机这6年,董明珠的脸肿么了?格力手机已经推出六年了,当年董明珠看不起的小米,如今,出货量已经9807万台了。而大松G7估计今年要达到抹去四个零的水平都有点难。最近还被曝出,刚上市就有人在闲鱼上甩卖了。文金融八2021年5款最适合设计师的笔记本电脑完美屏与顶级性能结合哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您许多最好的设计师笔记本电脑都有共同点。笔记本电脑和可转换的二合一电脑通常没有台式电脑有力,但现代技术的进步意味着我们现在可以包149人当选2021年两院院士最小年龄45岁来源人民网原创稿人民网北京11月18日电(记者赵竹青)11月18日,2021年两院院士增选结果正式揭晓,共有149人当选。其中,中国科学院增选院士65人,中国工程院增选院士84人。你抢跑元宇宙了吗?今天元宇宙没来,卖课的先赚了一波话题登上热搜。原来一张名为元宇宙第一课的网络课程后台截图在社交平台流传。截图信息显示,这门课程累计收入近160万元,而此时距离课程上线仅约10天。眼为什么第一个提出元宇宙的人是脸书?而不是中国企业?非死不可的目的是形成媒体垄断。连特朗普都能禁言的平台,媒体垄断已经实锤了。如今,它更贪婪,他要做众人的感官垄断,在它主导的世界里,它可以为所欲为,它的自由就是你的监狱。别上当,商业为什么闲鱼有这么多便宜的苹果笔记本?咸鱼上骗子多我想说的是,什么东西都有一个合理的价值存在,而价值的体现就是价格。价格太便宜了,这个笔记本难道是白捡的吗?诚然,闲鱼上确实有这种情况,什么男(女)朋友送的,分手了低价出
iPhone用户最期待的iOS15新功能,屏下指纹识别居然是第一你们好,这里是Seek思科,为你寻找苹果最新资讯苹果隐藏技巧苹果良心APP以及苹果优质配件。如果你需要这些,不妨点个关注。尽管iOS15即将发布,但是从目前得到的比较靠谱的消息显示发布在即,官方线下旗舰店已开启荣耀50系列预约活动IT之家5月31日消息荣耀已官宣荣耀50系列新旗舰将搭载高通骁龙778G芯片,将于6月发布,现有网友发现荣耀50系列竟然已经在线下开启预定了,并且还将推出一个Earbuds2SE。数字人民币是什么数字人民币怎么用数字货币简而言之就是货币的数字化,数字人民币和现金一样,无需银行账户,就能使用,能更大限度地保护大家的隐私。当然,对于老百姓来说更重要的是实际使用的感受,毕竟无论是支付宝,还是数字UU跑腿称顺丰帮排队涉嫌抄袭,后者暂未回应日前,UU跑腿通过社交媒体发布关于对顺丰同城急送产品及设计团队发展的几条建议(以下简称建议),表示顺丰近日的推出帮排队功能,在名称介绍文案图标设计排列布局方面,几乎与其在2016年红米Note10系列开售在即!这次会很好买吗?关注过Note系列的小伙伴应该都知道,这个系列的产品性价比可以说是延续到了极致,无论是产品体验还是产品性能都有着极为出色的表现。也正是这样,RedmiNote系列的机型销量已经突破苹果,WWDC2021,会公开哪些技术?WWDC2021前瞻wwdc2021苹果发布会苹果开发者大会(WWDC)苹果WWDC216月8日凌晨线上举行iOS新版本等引发关注苹果世界开发者会议(WWDC)活动将于6月7日至1超威集团发布超导石墨烯电池电池中国获悉,5月28日,超威集团对外发布了超导石墨烯电池新品。石墨烯堪称是21世纪的新材料之王,石墨烯(GRAPHENE)是一种由碳原子以SP杂化轨道组成六角型呈蜂巢晶格的二维碳三元锂电池皇帝的新衣被比亚迪戳破困兽犹斗比亚迪汽车记者,漫画,纪录车这个时代需要一位战士来揭示新能源汽车的皇帝的新衣服。但没有人可以实现这首战士是比亚迪。近年来,中国和世界的新能源汽车是年度热门话语。与此同时,新能源汽车仍然无几款好用的跨网络传输工具在工作中,我们常常用到跨网络传输工具来提高工作效率。近距离有AirDrop,但如果距离被无限拉远,以及在其它设备上,还有办法快速将文件文字快速同步到另外的设备上吗?苹果设备通过连续大家觉得华为手机能把苹果手机排挤出中国市场吗?想多了,我刚刚把华为换回苹果了,就不是一个档次的东西,爱国这种东西忽悠一次可以,老拿这种来作为高价的外衣就不合适了,以后坚决不用,除非价格减半差不多!不可能,现在华为手机基本没多少京东物流,当了一把大韭菜京东物流上市了,最近比较忙,所以一直没有发文章,之前说过如果开在2030的涨幅一定会进场捞,然后捞了之后就变成了大韭菜。京东物流的涨幅确实是差不多,最起码暗盘差不多。捞的原因是因为