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

全民编程都这么久了,你们怎么还不关注一下

  Innodb的四个特性  预读双写缓冲区插入缓冲(change buffer)自适应哈希索引
  innodb架构体系图预读
  在介绍Innodb预读特性之前,笔者有必要介绍一下操作系统的局部性原理,这样方便于读者理解Innodb的一个强大特性-----预读。
  局部性原理
  一个优秀额程序通常会有良好的局部性,所谓局部性指的是一个应用程序通常会重复使用某块内存区域中的数据,或者使用该区域邻近内存区域的数据。默认情况下当操作系统监测到某块内存区的数据将要被重复使用或者邻近的数据将要被使用时,操作系统会一次性将相邻的若干个数据块同时加载到内存缓冲区中。局部性原理分为以下两种:时间局部性原理:时间局部性原理主要体现在某一块区域中的数据将要被重复使用 空间局部性原理,主要体现在相邻的数据块将要被使用,操作系统一次性将邻近的多个数据块一次性 通过IO读入内存缓冲区中,下面举个例子来证明空间局部性原理带来性能的提高: package com.htym.bean;  public class LocalTest {      public static void main(String[] args) {         int[][] arr = new int[10000][10000];         for(int i=0; i<10000; i++){             for (int j=0; j<10000; j++){                 arr[i][j] = 1;             }         }         long begin1 = System.currentTimeMillis();         int sum = 0;         for(int i=0; i<10000; i++){             for (int j=0; j<10000; j++){                 sum += arr[i][j];	          //arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][04],arr[0][5].....相邻的数据块仅需通过一次IO操作全部加载到内存中             }         }         System.out.println("结束时间:" + (System.currentTimeMillis() - begin1));              --------------------------------------------------------------------------------------------------         long begin2 = System.currentTimeMillis();         sum = 0;         for(int i=0; i<10000; i++){             for (int j=0; j<10000; j++){                 sum += arr[j][i];					///arr[0][0],arr[1][0],arr[2][0],arr[3][0],arr[4][0],arr[5][0]             }         }         System.out.println("结束时间:" + (System.currentTimeMillis() - begin2));     } }  最终输出结果: 结束时间:144 结束时间:3607  计算同一个二位数组的和但是耗时确相差20多倍,原因就在于数组为连续的内存空间,arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][04],arr[0][5]... 为相邻的数据块仅需通过一次IO操作全部加载到内存中,然而,///arr[0][0],arr[1][0],arr[2][0],arr[3][0],arr[4][0],arr[5][0] 并不是相邻的数据,操作系统只能一个一个的读取,每一次读取都是一次IO操作。
  有了以上局部性原理的知识基础之后,我们再来理解预读的原理就相对简单多了。可以简单的理解为:当Innodb监测到某一块磁盘空间的数据将要被读取时邻近的数据很快将要被使用,Innodb会一次性仅通过一次IO操作将数据读取到内存缓冲池中。Innodb中预读包含两种模式:顺序预读:如果Innodb监测到表空间的某个段的数据将要被使用并且其相邻的数据段也将要被使用, 那么Innodb将会一次性通过一次IO操作将数据批量读取到内存缓冲池当中 随机预读:如果InnoDB注意到表空间中的某些区域似乎正处于被完全读入缓冲池的过程中,它会将 剩余的读取发送到 I/O 系统
  何时触发Innodb预读功能可以通过如下配置来控制//顺序预读配置参数 Innodb_read_ahead_threshold: 配置参数 innodb_read_ahead_threshold 控制InnoDB检测顺序页面 访问模式的敏感程度。如果从一个extent顺序读取的page数大于等于 innodb_read_ahead_threshold, 则InnoDB启动后续整个extent的异步预读操作。 innodb_read_ahead_threshold可以设置为 0-64 之间的 任何值。默认值为 56。值越高,访问模式检查越严格。例如,如果您将该值设置为 48,则InnoDB  仅当当前扩展区中的 48 个页面已按顺序访问时才会触发线性预读请求。如果值为 8,InnoDB即使按 顺序访问范围内少至 8 个页面,也会触发异步预读。您可以在 MySQL配置文件中设置该参数的值,或者 通过语句动态更改它 SET GLOBAL,这需要足够的权限来设置全局系统变量。  //------------------------------------------------------------------------------------------------------ //随机预读配置参数 innodb_random_read_ahead=ON:随机预读是一种技术,它根据缓冲池中已经存在的页面预测何时 可能很快需要页面,而不管读取这些页面的顺序如何。如果在缓冲池中找到来自同一extent的 13 个 连续页面,则 InnoDB异步发出请求以预取扩展区的剩余页面。要启用此功能,请将配置变量设置  innodb_random_read_ahead为 ON  //----------------------------------------------------------------------------------------------------- 双写缓冲
  双写缓冲区:双写缓冲是一种特殊的文件刷新技术,它涉及到一种称为双写缓冲区的数据结构。在默认情况下Innodb默认开启该功能(dubblewrite_buffer=ON),他增加意外退出和断电后的数据恢复的安全性,并减少文件同步(fsync())操作来提高数据库的性能。
  在将页面写入数据文件之前, InnoDB  首先将它们写入称为双写缓冲区的连续表空间区域。只有在对双写缓冲区的写入和刷新完成后,才会 InnoDB  将页面写入数据文件中的适当位置。如果在页面写入过程中存在操作系统、存储子系统或意外 的 mysqld进程退出(导致 页面撕裂的 情况), InnoDB 则可以稍后在恢复期间从双写缓冲区中找到该页面的良好副本。
  双写缓冲的实现过程:对缓冲池的脏页进行刷新时,不是直接写磁盘,而是会通过memcpy()函数将脏页先复制到内存中的doublewrite buffer,之后通过doublewrite   再分两次,每次1M顺序地写入共享表空间的物理磁盘上,在这个过程中,因为doublewrite页是连续的,因此这个过程是顺序写的,开销并不是很大。在完成doublewrite页的写入后,再将doublewrite buffer 中的页写入各个 表空间文件中  ,此时的写入则是离散的。如果操作系统在将页写入磁盘的过程中发生了崩溃,在恢复过程中,innodb可以从共享表空间中的doublewrite中找到该页的一个副本,将其复制到表空间文件,再应用重做日志。
  注意:将数据页写如文件的时候,Innodb会将数据写入redo log日志文件中,当完全写入redo log文件之后会设置一个prepare状态,然后再将数据写入dubbo write buffer中,当意外突出或者断电,数据库恢复数据时会先检查redo log日志文件中是否有prepare状态,如果有直接使用dubble write buffer恢复数据,如果dubble write buffer不可用则使用redo log文件恢复数据,这种方式称为二阶段提交方式。
  数据写顺序:redo log ---> dubble write buffer - 通用表空间---->指定表空间insert buffer插入缓冲
  innodb使用insert buffer"欺骗"数据库:对于为非唯一索引,辅助索引的修改操作并非实时更新索引的叶子页,而是把若干对同一页面的更新缓存起来做合并为一次性更新操作,转化随机IO 为顺序IO,这样可以避免随机IO带来性能损耗,提高数据库的写性能。
  插入缓冲的配置all: 默认值,缓存insert, delete, purges操作 none: 不缓存 inserts: 缓存insert操作 deletes: 缓存delete操作 changes: 缓存insert和delete操作 purges: 缓存后台执行的物理删除操作  可以通过参数控制其使用的大小:  innodb_change_buffer_max_size,默认是25%,即缓冲池的1/4。最大可设置为50%。 当MySQL实例中有大量的修改操作时,要考虑增大innodb_change_buffer_max_size自适应哈希索引
  当缓冲池中的某个数据(17次)或者某个页(100次)经常被访问,达到一定频率的时候,Innodb会根据缓冲池中的数据自动构建一个hash索引,提高数据的访问速度,该索引称为自适应哈希索引。
  Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,二级索引成为热数据,建立哈希索引可以带来速度的提升
  经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。
  哈希(hash)是一种非常快的等值查找方法  ,在一般情况下这种查找的时间复杂度为O(1),即一般仅需要一次查找就能定位数据。而B+树的查找次数,取决于B+树的高度,在生产环境中,B+树的高度一般3-4层,故需要3-4次的查询
  篇尾寄语:
  技术赋能于业务,希望本篇文章让每一位读者有所收益...................................................
  如有不当的地方请多多计较,共同学习,共同进步,fighting............................................
  祝所有编程爱好者,求职,加薪,迎娶白富美,走向人生巅峰........................................

美军击落的不明飞行器是不是外星人所驾驶的飞船过去几天美军在北美地区击落四个飞行器,其中一个已经确认是我国气象探测气球,另外三个没有给出具体答案,这让击落不明飞行物事件变得神秘起来,外星人飞船之说随之而起。我们附近星球没有外星土星环中的辐条开始新季节1981年8月22日,外出的旅行者2号飞船首次观测到土星环上的黑色辐条。现在又到了土星的演讲季节,科学家们正在试图理解和解释这些神秘的特征。哈勃太空望远镜一直在研究土星环中的辐条。微信新变化,仅限今天今天这个特殊的日子,微信节日限定红包再次上线,与往年一样,微信红包的金额上限由200元调整为520元,由于520谐音我爱你,经常成为有情之人间表达爱意的手段。同时微信上线了限时状态DNA是外星物质创造的吗,真正的起源是什么?DNA(DeoxyribonucleicAcid)是生物体内遗传信息的载体。关于DNA的起源,科学家们还没有完全的答案,但是有几种主要的理论。生物学理论根据这一理论,DNA是由生物玩不转的ChatGPT,它让我做了500W的梦?最近科技界的新晋网红ChatGPT一战成名,成为了资本追逐商人热捧的对象,这也预示着AI预训练模型的崛起。作为一个软件开发技术宅当然不能错过这一大盛事,看着各大媒体各种各样的报道,3款长续航电动车发布,质保10年,最远能跑150km,主打耐用阅读本文前,请您先点击上面的关注,这样您就可以免费收到我们的最新内容,感谢支持从最初的草根车辆,到如今充满黑科技的国民代步车,电动车产业在近几年的高速发展中,诞生了一批经典车型与新深度欧美石油巨头市值差距拉大,引发并购大猜想记者戴晶晶我们认为,埃克森美孚和雪佛龙中的任何一家,都可能试图收购其主要的欧洲竞争对手之一,即英国石油公司(bp)壳牌或道达尔能源。经历了油市轰轰烈烈的2022年,美国花旗银行的分光伏历次大洗牌到底有多惨烈?人很可能多次踏入同一条河流!有时,历史最大的教训就是没有教训。中国光伏二十年,我们已经历经2008年的金融危机,2012年前后的双反,2018年的531等多次下行周期与洗礼,以及本助力绿色石化基地建设千万吨级炼化一体化项目进入全面试产阶段来源人民网人民网北京2月13日电(记者杜燕飞)记者从中国石油获悉,2月12日,千万吨级炼化一体化项目中国石油广东石化炼化一体化项目(以下简称广东石化项目)的120万吨年乙烯装置投料通知!405个!日照正式发布!2月11日,日照市人民政府印发关于公布2023年市重点项目名单的通知,全市共推出省市重点项目405个。列入省级重点项目96个,计划总投资935。2亿元,年度计划投资291。9亿元。股价8天狂飙330,中航电测请投资者理性北京日报客户端记者孙杰面对股价狂飙,上市公司连发公告为市场情绪降温。2月13日,中航电测连续第八日涨停,股价由复牌前的10。58元股一路飙涨至45。52元股,累计涨幅高达330。2
那些让人难忘的经典手机razrv3x你还记得摩托罗拉的刀锋吗?在摩托罗拉手机发展历程中,有一个系列名为Razr。Razr一词来源于razor,意为剃刀,这个词抓住了RazrV3轻薄和金属质感这两个最大的卖点。在200性能强才能用更久骁龙8旗舰仅需2369元对于手机来说,想拥有出色的性能表现,一个强大的处理器必不可少。而在目前的手机市场中,高端处理器的首选仍然是骁龙。由于骁龙8处理器即将发布,在去年年末发布的全新一代骁龙8移动平台经过满足你对高颜值手机的想象,vivoS15系列带来颜值巅峰在近几年,用户购机时越来越关注手机的外观设计,高颜值手机更能得到用户的喜爱。前不久vivo推出自家新机vivoS15系列,这款产品拥有出色的设计表现,颜值出众,得到许多用户的关注。5月安卓手机好评榜出炉华为vivo红米均上榜,并夺得好位置随着摄像头屏幕5G快充技术的普及,目前的手机产品都开始逐渐同质化,这种情况下的各大手机厂商就开始比拼自身的优化实力了。有的手机厂商优化能力非常强,那么消费者的口碑就会很优秀,有的厂肾病综合征患者日常注意事项肾病综合征在临床上常见表现有水肿蛋白尿低蛋白血症高脂血症等症状。本病的预后不一且与病理类型并发症等多种因素相关,患者除了积极配合医生进行治疗外,在日常生活中还应注意以下几个方面饮食每次发射烧40亿美元!世界最贵的火箭再次离开总装厂房前往发射台美国东部时间6月6日,NASA登月火箭SLS和猎户座飞船从肯尼迪航天中心火箭装配大楼出发,再次前往39B发射台测试,全程将花费大约8至12个小时。根据NASA肯尼迪航天中心表示,S神舟十五号随时可发射!为什么?外媒点评神十四画风大变神舟十四号载人飞船发射取得圆满成功!在三名航天员陈冬刘洋蔡旭哲进入中国空间站后,将开展一系列的航天任务。同时!我们又迎来了问天实验舱神舟十五号载人飞船的相关信息。所以,中国空间站建杨利伟在太空听到敲门声,十七年后谜底揭晓,幸亏他当时机智太空中有什么?从地球望向太空,除了浩瀚星系,只有月亮或太阳能被人类看见。自古以来人类对太空都抱有神话色彩,例如中国古代,道家声称苍穹之上有罡风,只有飞升过程穿越罡风,才能飞进宇宙。接力棒交到了陈冬刘洋蔡旭哲手中2003年10月,神舟五号成功发射中国载人航天开始了逐梦苍穹的征途中国航天员9次进入太空现在接力棒交到了陈冬刘洋蔡旭哲手中杨利伟聂海胜费俊龙景海鹏翟志刚刘伯明刘旺景海鹏刘洋(女)王双语太空播报NASA月球火箭骨干加入阿耳特弥斯一号任务助推器ThecorestageoftheSpaceLaunchSystem(SLS)rocketforNASAsArtemisImissionhasbeenplacedonthemobi4大开发商944个风电项目中标分析!涉及国家能源集团三峡等能源人都在看,点击右上角加关注北极星风力发电网讯2021年我国陆上风电全面平价,风机价格一度低于1500元kW2021年海上风电抢装潮,海上风电项目抢电价,建设动态项目并网火热的同