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

Mysql在CRUD时,BufferPool发生了什么

  一、前言
  下面让我们就一起看下,当你执行CURD时,InnoDB的Buffer Pool中都发生了什么!以及Buffer Pool的优化! 二、介绍
  你知道的,MySQL对数据的增删改查都是内存中完成的,这块内存就是Buffer Pool。
  你可以像下面这样查看下你的MySQL的Buffer的Buffer Pool的默认大小
  上图中的0.125单位为GB,转换成MB就是 1024* 1/8 = 128MB
  总结来说,就是MySQL启动后就会为我们初始化好这块Buffer Pool。如下图:
  你可以看着上图,然后读下面这段话:
  MySQL以数据页为单位,从磁盘中读取数据。数据页被读取到内存中,所谓的内存其实就是Buffer Pool。
  Buffer Pool中维护的数据结构是缓存页,而且每个缓存页都有它对应的描述信息。
  由于MySQL刚启动,还没有从磁盘中读取任何数据页到内存(Buffer Pool)中,那此时Buffer Pool中所有的缓存页其实都是空的。
  除了缓存页之外,你还能看到Buffer Pool中存在三个双向链表。分别是FreeList、LRUList以及FlushList。这三个双向链表中维护着缓存页的描述信息。 三、假设你读取出来了1个数据页
  当你通过select读取出一个数据页之后,是需要将这个数据页加载进Buffer Pool中的缓存页中的。
  那问题来了,MySQL怎么知道该将你读取出来的数据页存放在那个缓存页中呢?相信你看了上图应该也能想到答案了。FreeList这个双向链表不是存放了空闲的缓存页的描述信息吗?那从FreeList中取出一个空间缓存页的描述信息不就好了?于是得到了下面这张图:
  我们对这张图稍微做一下解读:
  InnoDB会将你读取出来的数据页加载进Buffer Pool中的缓存页中,然后缓存页的描述信息也会被维护进LRU链表中。链表做了冷热数据分离优化,5/8的区域是热数据区域,3/8的区域算是冷数据区域。(本质上它们都是双向链表),而你新读取的数据页会被放在冷数据区的靠前的位置上。
  如果你将该数据页读取出来加载进缓存页中后,间隔没到1s,就使用该缓存页。那么InnoDB是不会将这个描述信息移动到5/8的热数据区域的。
  但是当超过1s后,你又去读这个数据页。那这个数据页的描述信息就会被放到热数据区域。如下图:
  四、假设你一次性读取出来了好多数据页
  MySQL是存在预读机制的。假设触发了MySQL的预读机制。一次性从磁盘中读取来N多个缓存页。会得到下面这张图:
  因为发生了预读,所以你的一次磁盘IO读出了大量的数据页,但是这些数据页中很可能是有一些是你根本不需要的,仅仅是预读把它们级联查出来了。这时按老规矩,从FreeList中找到空闲的缓存页信息,然后将其从FreeList中移除。根据找到的空闲缓存页的描述信息,将从磁盘中读取出来的数据页加载进去。相应的该缓存页的描述信息也会被维护进LRU链表的冷数据区域。
  这时你就会发现这种冷热数据分离的机制多么妙!即使发生了预读又怎么样?根本没有机会将热数据区的描述信息1挤下去。当内存不够用了需要将部分缓存页刷新到磁盘中时,那就从冷数据区域开始刷新好了,反正他们本来就不经常被使用。
  同样的,当你超过1s后又访问了冷数据区的缓存页,比如访问了缓存页66和数据页67,该缓存页对应的描述信息是会被提升到热数据区,于是有了下面这张图:
  那,如果你访问上图中的数据页67,它会移动到描述信息66所在节点的前面去吗?
  其实MySQL的LRU链表做了优化,数据67是不会往前跑的。 五、假设你修改了某数据页
  假设你执行了update xxx set xxx where id in (xxx,xxx,xxx,xxx);
  而符合条件的数据行恰巧就在描述信息1、描述信息66、描述信息67所指向的缓存页中,那BufferPool中会发生什么呢?
  如下图:
  你会看到,被你修改了的缓存页的描述信息,被添加到了FlushList这个双向链表中。
  想必看到这里你已经知道了,原来FlushList中的节点存放就是被修改了脏数据页的描述信息块。
  随着MySQL被使用的时间越来越长,BufferPool的大小就越来越小。等它不够用的时候,就会将部分LRU中的数据页描述信息移除出去,这时如果发现被移除出来的数据页在FLushList中,就会触发fsync的操作,触发随机写磁盘。如果该数据页是干净的,那移除出去就好了。其他也不用干啥。
  举个例子:假设需要将描述信息66、描述信息67指向的缓存页落盘。会得到下面这张脑图:
  描述信息66、67指向的缓存页被刷新进磁盘。 同时从FlushList中将其移除,然后存入FreeList中。完成一个循环
  当然,将脏数据页刷新进磁盘的时机除了上图中说的还有好多种情况
  下面再看一下关于Buffer Pool的设置和相关的优化。 六、配置Buffer Pool的大小
  buffer pool越大,MySQL的性能就越强悍。你可以像下面这样配置Buffer Pool的大小。 mysql>SET GLOBAL innodb_buffer_pool_size=402653184;七、配置多个Buffer Pool的实例
  你可以为MySQL实例配置多个Buffer Pool,每个Buffer Pool各自负责管理一部分缓存页,并且有自己独立的LRU、Free、Flush链表。
  当有多线程并发请求过来时,线程可以在不同的Buffer Pool中执行自己的操作,MySQL性能就会得到很大的提升
  在my.d中进行配置 [server] innodb_buffer_pool_size = xxx  innodb_buffer_pool_instances =4
  意思是将总容量为xxx的buffer pool划分成4个实例。每个实例都有 xxx/4 的容量。
  参数innodb_buffer_pool_instances的最大值为64,并且想让该参数生效,innodb_buffer_pool_size容量至少是1G。
  可以像下面这样查看你的MySQL的Buffer Pool实例状态。
  八、揭秘BufferPool的真实结构
  现实中Buffer Pool动辄就占用好几G的内存,相对于直接申请几G的内存完成扩容,MySQL有更优雅的实现方式。
  为了实现动态调整Buffer Pool的大小。MySQL设计了chunk 机制。
  可以看上图脑补一下Buffer Pool 以及 Chunk长什么样。
  总的来说:就是将每一个 Buffer Pool Instance 更加细力度化。将Buffer Pool拆分成更小的独立单元。
  每个Buffer Pool划分成多个chunnk,每个chunk中维护一部分缓存页、缓存页的描述信息。同属于一个Buffer Pool的chunk共享该Buffer Pool的lru、free、flush链表。
  块大小由参数innodb_buffer_pool_chunk_size控制,默认值为 128M
  该参数可以像下面这样修改: shell> mysqld --innodb-buffer-pool-chunk-size=134217728
  或者通过配置文件自定义 [mysqld] innodb_buffer_pool_chunk_size=134217728九、看一看Buffer Pool相关的参数
  执行命令 > mysql show engine innodb status十、如何规划你的Buffer Pool大小
  推荐将Buffer Pool的总大小设置为服务器内存的 50%~60%左右
  BufferPool总大小 = (chunkSize * bufferPoolInstanceNum)*2 十一、Buffer Pool的预热机制
  这种机制实际上是想让重启后的MySQL快速适应大规模的流量请求。
  InnoDB 在服务器关闭时为每个缓冲池保存一部分最近高频使用的页面,并在服务器启动时恢复这些页面。保存多大比例的缓存页由参数innodb_buffer_pool_dump_pct控制。
  在启动时还原缓冲池,实际上会缩短预热的时间。
  你可以通过下面的方式配置该参数  # 通过命令 SET GLOBAL  innodb_buffer_pool_dump_pct=40; # 通过文件 [mysqld]  innodb_buffer_pool_dump_pct=40
  参数innodb_buffer_pool_dump_at_shutdown控制 MySQL关闭时保存缓冲池的状态,默认为on的状态。
  启动参数--innodb-buffer-pool-load-at-startup 表示启动MySQL的时候恢复缓冲池中的状态,默认也是开启的。

主管和分管具体有什么区别?主管和分管是主要领导和副职分工的一种表述方式。主管,顾名思义就是主要管理。一个地方或一个单位主要领导要负责本地区和本单位全盘工作,没有那么多精力把全部工作都抓在手里,于是按惯例会挑为什么有人说国内啤酒和国外啤酒的酒劲差距很大?国产啤酒单位体积酒精度4。0,原麦汁浓度为9度时已经算是国产好啤酒了。国外的基本都在5度左右,原麦汁浓度在12左右,这就是酒劲的差距。比如你连续喝4罐330毫升的德国瓦伦丁,5。2上初二的学生,成绩差还能逆转吗?先不谈成绩,谈一个重要问题,初二的学生一般在1314岁,这个年龄阶段一个般处在青春叛逆期1叛逆期的孩子机智,都有点不想听大人的话,不服管,喜欢玩手机,不给孩子商量好,就算家长老师说微浸润性肺腺癌过几年才算是安全期?我是医心雕龙,我来回答!微浸润性肺腺癌过几年才算是安全期?其实肺癌即便是在很早期手术切除,但仍不能说绝对的安全,这期间存在一定概率的复发可能,但这种复发的率会随着时间的延长逐渐下降怀孕第一个月应该重点补充什么营养?叶酸,微量元素如钙铁,黄体酮维持体温如豆浆。其它正常饮食。怀孕的第1个月,大部分孕妈都是不知情的,当知道自己怀孕的消息,一般已经怀孕一个多月了。怀孕第一个月是从末次月经的第一天算起城镇居民社保和新农保有什么区别?两者可以同时购买,但以后退休的话,只能领取一份,也就是重复缴纳了目前社保和农保还不能相互转移,缴纳社保,以后退休工资会比农保高很多,而且现在劳动法规定,参加单位的,都必须缴纳社保的胡歌去国外真的是在读书么?这问题提的怪怪的,当然是在读书,如你有兴趣去微博搜胡歌撰写的文章有吃者,事竞成,文章中记录了他游学读书生活,诙谐幽默。胡歌也说,游学就是一份经历一份体验。他想学什么怎么学,什么时间学生作业没完成被老师罚站,家长闹事,校长批评老师并要求检讨合理吗?首先,当初制定法律的那些专家必须要出来解释一下罚站算不算体罚。如果罚站算体罚,那么老师就是不对的如果罚站不算体罚,那么老师是对的。当然老师不对,校长批评老师那就是应该的如果老师是对本科无学位可以拿到硕士学位吗?读在职研究生的学费是多少?谢邀。先回答你第一个问题,大多数的学校对考生的要求是在入学年的9月1日前需要拿到本科毕业证,并无明确要求必须有学位证,所以就算没有本科的学位证,你只要在读研阶段能够顺利的完成所有的经常喝蜂蜜水会得糖尿病吗?长期过量摄入添加糖(蜂蜜糖果白砂糖饮料甜点等)会增加得糖尿病的风险。蜂蜜的主要成分是葡萄糖和果糖(6581),此外,尚含有少量的蔗糖糊精矿物质有机酸芳香物质和维生素。饮食中过多的糖为什么明知道一个股票是烂股,每天阴跌就是舍不得换呢?非常直接的答案不懂方法,心里没底,害怕一卖就涨,一买就跌真正的原因主要有2个第一种是害怕自己如果割肉了后它会直接数个涨停拉回去,这就是所谓的一卖就涨第二种是害怕卖了后去换股,怕新买
都是骁龙8芯片,荣耀80GT和红米K60对决前瞻,网友2K屏真香这两天红米K60系列吸引了很多人的注意力,但是荣耀80GT也不能被忽视,其号称要重塑线上性能手机新格局,这表明荣耀对其在线上市场的表现充满的信心,而且荣耀80GT发布的时间和红米K微信又上线新功能!网友这次还挺实用小伙伴们最近iOS版微信悄悄更新了2个实用的新功能大家发现了吗?在iOS版微信8。0。31版本中,对拍照功能进行了大升级。不仅上线新的拍照界面,还加入了对微距拍摄的支持,解决了此前2020,一定要打卡这18个地方只有在路上,感受各种城市不同的风景才发现自己是真正的活着人这一生至少该出去痛痛快快的旅行一次跳出自己的舒适圈,全看不一样的生活方式只有在路上,才能听到自己内心的声音它告诉你这世界很易方达基金副总裁范岳指数投资的挑战与机遇并存近年来,国内指数基金发展非常快,总规模已接近2万亿人民币,正在成为投资者资产配置的重要工具,在服务居民财富管理需求服务实体经济创新驱动方面发挥着重要作用。易方达基金副总裁范岳在南方线上试穿直接下单,淘宝进军元宇宙直播那些已知与未知如果体验过希壤,再来逛淘宝的元宇宙空间就不会觉得陌生,都是用户以虚拟形象在虚拟空间活动,但在淘宝的虚拟空间,逛街的感觉更强。一位业内人士直言。12月26日,有消息称,淘宝有望在年货好评入画乍出来的财富乍洞村脱贫之路刘奕兰(湖南师范大学树达学院)指导老师张小龙你可曾闻此话?地无三里平,天无三日晴,人无三两银。它向我们诉说着广西乍洞村山影重重的神秘与落后,诉说着村民们祖祖辈辈的贫困。虽然穷,乍洞圣诞将至,这些顶级文案快快拿走吧!1把麋鹿挂在圣诞树上,把我挂在你心上。2愿望清单中,你是我zui想要的未来。3圣诞的每一片雪花,都是冬天的来信。4诞愿是你,晚一点也没关系。5我收到的最好的圣诞礼物,是穿越风雪为我美好周末与DIOR迪奥相约星夜梦工坊节日季即将到来,DIOR迪奥星夜梦工坊限时体验店于成都太古里施展冬日魔法。在这座古老而充满浪漫气息的城市一隅,DIOR迪奥倾情打造星河璀璨的梦幻之境,邀您共赴一场充满惊喜的美妙邂逅在布达拉宫面前在布达拉宫面前,我只有匍匐和景仰,任何语言都显得多余和苍白!所以我只记下行程。7月29日上午1130,从宗角禄康公园进入布达拉宫景区。虽然雨基本停了,但天仍然阴沉着脸。1230,从听见你,温暖你丨甘宇我只是个平凡人,相信善良和美好2022年开启结束倒计时这一年总有一些平凡的坚守让我们感动总有一些声音让我们难以忘怀在充满变化与挑战的时光中这些声音这些温暖的人带给我们确定与信心年底,我们采访了6位嘉宾听他们讲讲科技让港口更美好聞鍾記郵(4439)科技让港口更美好科技让港口更美好是一句邮资机宣传戳上的宣传语,这就是上海航海主题邮局在本月10日新启用二维码邮资机宣传戳上的一句标语式的标题,在这个标题下面还有