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

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链表分为热数据区和冷数据区两部分,这样就可以解决预读失效和缓冲池污染的情况。

一年收获超90万新增作家,阅文战略升级文陈晓平编辑李惠琳6月3日,2021阅文年度发布会在上海中心举行,阅文集团CEO程武宣布,大阅文战略升级。大阅文战略,将基于腾讯新文创生态,以网络文学为基石,以IP开发为驱动力,开小米10s和小米11音质哪个好,音质对比评测小米10s和小米11作为今年全新推出的机型,大家对于小米10s和小米11手机都十分关注,那么小米10s和小米11相比哪款手机的音质更好呢?小编为大家分享一下关于小米10s和小米11国产手机巨头走向全球,在欧洲取得新突破,完成5G技术升级随着国内市场的不断饱和,国产手机厂商纷纷将目光瞄向了海外市场,只有在海外取得更大的突破,市场份额才能够得到更进一步的增长,企业规模才可以持续扩张。小米作为一家非常年轻的公司,所取得鸿蒙战机第三大操作系统背后手机业务正式停摆,鸿蒙系统能为华为IT产品带来多大的助力?能挽留华为手机老用户多久?文智物华为为什么会在此时此刻,推出鸿蒙系统?两年前,智物(微信公众号智物科技评论)团队在FT中文林氏木业新零售下经销关系的格局变化二十多年前,当阿里巴巴携电子商务搅动中国商业零售的一池春水时,有人惊呼打败实体店的巨兽出现了。但二十年后,以阿里苏宁京东为主的电商巨头们,从城市到乡村,却又纷纷抢滩布局实体店。有的华为PlanB揭开面纱鸿蒙要超越安卓?小米OPPO们买单吗?文郭小山PoweredbyAndroid,打开市面上大多数安卓手机,开机后往往显示这样一行字。但今后,至少有数亿部华为手机不会再有这个提示,因为,鸿蒙HarmonyOS来了。6月2华为无奈官宣,P50系列遥遥无期,恐成华为旗舰机绝唱?6月2日晚间,华为举行了鸿蒙操作系统及华为全场景新品发布会,正式发布了备受关注的鸿蒙操作系统HarmonyOS2,同时也带来了MatePadPro平板电脑智能手表HAIWEIWAT华为WATCH3评测旗舰回归不负期待6月2日,HarmonyOS及华为全场景新品发布会线上开启,大家期待已久的华为WATCH3系列智能手表也正式发布。作为华为旗舰智能腕表,上一次发布WATCH系列还要追溯到四年之前,华为MatePadPro系列发布,首搭鸿蒙OS二代MPencil,3799元起除了全球首款搭载鸿蒙OS的手表外,华为还带来了全球首款搭载鸿蒙OS的平板华为MatePadPro,配置和体验优秀,打破边界,创造无界。一上来先聊的是配置,最后是体验,还有新款MPe华为手机如何升级到鸿蒙系统HarmonyOS昨天华为手机鸿蒙HarmonyOS岀来了,这是值得全中国人骄傲和高兴的一天,今天我就手把手教你如何升级华为手机的harmonyOS。第一步,在自己的手机找到我的华为这个图标菜单。点华为最新发布的HarmonyOS系统对小米有何影响?其实让小米进退两难,一边网友纷纷表示让小米加入鸿蒙生态,这无疑要放弃安卓,虽然对于小米公司来说从安卓转鸿蒙不是很难,但也有一定的挑战。其次小米的智能家居布局问题,现在的连接方式是通
华为拒授加方5G专利众多科技公司第一时间申请专利的注册,不仅仅意味着公司可以依靠知识产权和专利获得授权费,还意味着公司的营收结构发生了大变化。如果一家公司突然申请了大量的专利,当其它公司使用该公司申请破壁机到底有没有必要买?家里用过2台,说说真实感受网上对破壁机的争议一直都没断过,有人认为它功能鸡肋,纯属智商税有人则认为它多效合一,方便又实用。作为使用过2台破壁机的人狗头,今天给大家说说自己的真实感受。破壁机的四大优势1)功能欧洲手机市场排名苹果跌落第三,三星也不是第一,国产品牌登顶国产手机品牌在发展十周年之际,拿下欧洲手机第一名,将苹果挤到第三名,三星只能排到第二,究竟是哪家手机品牌能够取得如此成绩呢?欧洲手机市场排名随着智能机的不断普及,各大品牌纷纷在国际3年前256GB的iPhoneXR放到现在,相当于什么价位的安卓手机?在大多数人的眼中,苹果手机的使用寿命是非常长的,就比如2018年发布的iPhoneXR,到目前为止仍然拥有竞争力。不过话说回来,智能手机行业的更新换代速度本来就快,一款手机问世之后如何解释5亿年前的史前壁画?地球上是否存在几度文明?如果真出现了5亿年前的史前壁画,那么必然也是无可否认的地球上出现过古老的文明,说不定这个文明的人现在都到银河系以外生活了,再说不定月球就只是远古地球文明人工制造的产物,说不定我们现让你的安卓手机告别卡顿用安卓系统朋友都们知道,即使是再贵的手机,使用久了之后总会感觉有那么一点点不顺畅。这是因为安卓手机的特性手机安装的软件越来越多,后台运行的软件越来越多那么如何能让手机变的顺畅点呢?闲鱼上手机很便宜还能走验货宝,可以买吗?因为我在闲鱼卖手机,平板等数码用品,所以我会经常逛一逛。最近发现很多这种,价格挂的比别人低很多,还可以走验货宝,看起来好像是很划算,但是我总感觉有猫腻。比如这个卖家,256G的ma三星手机的生产性能和与其他手机比怎么样?三星手机的产业链太全面,涵盖CPU,内存,屏幕等等。尤其是显示屏,是其他手机厂商望尘莫及的。秒杀其它用过三星s4,s6,s8,note8,s10等,三星的做工和苹果一样绝对是工艺美腾讯网易等游戏企业和平台被约谈!强化氪金管控CNMO新闻此前,国家新闻出版署出台了史上最严格的防沉迷系统。但是依旧有一些不法分子利用未成年人的单纯心智不成熟来进行游戏诈骗。这些骗子宣称自己可以帮助未成年用户绕开防沉迷系统的检三大运营商不再是你的唯一选择,通讯界垄断已经开始打破早在小学课本上就有预言,21世纪是信息的时代,是科技的时代,虽然现在21世纪才过去了五分之一多一点点,但毫无疑问,这句话已经得到了验证。伴随着科技的不断发展,大家之间的信息交流也越卡西欧电子表中,什么手表最耐用质量最好可以不用换电池使用二十年以上的?1998年买的,已经带了21年了。一如果你想上天,请带他,空霸系列手表。卡西欧(CASIO)手表GSHOCK英勇的空之勇者拥有着敏锐的感知力判断力,生命的轨迹不会轻易被预设,从都市