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

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

  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............................................
  祝所有编程爱好者,求职,加薪,迎娶白富美,走向人生巅峰........................................

正式确认,美不愿看的芯片结果出现了华为在5G芯片等技术方面领先后,美就开始修改规则,不仅禁止高通谷歌等企业自由出货,还禁止ASML台积电等半导体芯片企业自由出货。最主要的是,美还在不断的修改规则,约束ASML向外企世界难题四色猜想首次数学直接证明(2022)刘江四色问题又称四色猜想四色定理,是世界近代三大数学难题之一。地图四色定理(Fourcolortheorem)最先是由一位叫古德里(FrancisGuthrie)的英国大学生提出来的。看到阿里的退货新规,商家笑了近日,淘宝天猫悄悄出台了新的规定,并已经于2月15日开始逐步灰度测试,实施之后,将影响千万商家和消费者。01hr未发货秒退货升级,商家们注意阿里出台的新规定有两条,一条是天猫淘宝支红米K50有感陷入僵局的国产机红米K50电竞版发布之后,3299元的价格也预示着新一年芯片价格上涨的开启。毕竟作为性价比之王的红米,一直以来价格都是非常实惠的。K50电竞版的价格上涨,也导致货源充足,抢购现象不如何选择合适的手机?要看哪些方面?买什么样的手机要看你的需求和预算。如果你的需求简单预算少,那买配置普通的就可以了。如果你的需求复杂,预算高,那就买配置高的。如果你的要求高,那就买旗舰机。旗舰机的配置高体验好功能丰选iQOO9还是红米K50电竞版,客观分析各自优缺点,不吹不黑说起小米,我们一般都会联想到性价比,因为近些年来,小米打造了很多性价比极其出色的产品。就以红米K40系列为例,凭借着亲民的价格,凶猛的堆料,上市之后很快便成为了诸多电商平台的爆款,iPhone13太强?国内最新手机销量出炉,国产手机下滑严重欧界欧界报道近日,中国信通院发布了2022年1月国内手机出货量情况图,国内手机总出货量为3302万部,其中5G手机占比达到79。7,可以说国内手机市场基本上都是智能手机的天下了,而早期客观分析怎么选择扫地机器人今天给大家整体分析一下,希望能帮助到你,首先要清楚我们为什么需要扫地机器人呢?我认为扫地机器人适合的人群1,孝敬父母,爸妈年纪大了腰痛腿痛2,鼻炎过敏体质,春秋时期灰尘花粉过敏3,为什么感觉现在没有小时候八九十年代过年热闹了?由于社会的进步使物质生活更为充实,人们追求目标的改观,家家都有电视机的播放,智能手机的普及等各种原因都造成如今感觉到没有以前过年热闹了。反观上世纪的百姓,成天累月的工作,平常星期礼这三款手机软件最好不要安装,会让手机变卡,影响手机寿命大家入手一部新的手机都会安装自己以前旧手机使用过的应用软件,入手一部全新的手机运行软件起来速度是很快和流畅的。但是有一部分手机用户说自己的手机才使用几个月的时间就开始变得非常卡顿起输赢已成定局?华为鸿蒙超出预期后,谷歌终于是坐不住了作为一款从2019年就开始曝光的产品,鸿蒙的关注度一直都没有减少,在2019到2021这两年时间里,关于鸿蒙的期待很多,同时关于鸿蒙的诋毁也很多。不过最终华为终于不负众望,推出了鸿
理想汽车登陆港交所首日即破发研发之路任重而道远中国科技新闻网8月12日讯(赵欣蕾任彦松)8月12日,中国新能源汽车制造商理想汽车宣布其A类普通股在香港交易所主板成功上市,发行价为118港元股,盘中跌破发行价。理想汽车表示,此次Siri播报奥运金牌忽略中国?官方紧急回应近日,虽在疫情压力下举办的东京奥运会过程十分艰辛,但是在赛程开始之后,各国网友依然打起十二分精神为自己国家的选手加油打气。历届奥运会的金牌榜排名都是各国关注的重点,这体现了一个国家官方放出iQOO8系列渲染图,大家觉得好看吗?现在就服iQOO这个品牌,管它其它品牌如何如何。反正我就按自己的节奏走,每天预热放出一个消息或者说确认一个参数。今天官方放出的是iQOO8系列的外观渲染图,这等于把iQOO8系列的央媒点名痛批阿里,资本不要妄想操控一切,吴亦凡就是最好证明8月9日,人民日报旗下的新媒体踏浪青年发布了对阿里女员工被性侵一事的文章,阿里女员工在遭受重创之后被逼无奈在食堂发传单寻求援助,换来的却是从上到下各级主管的无视和冷漠,事情一经爆出华为P50Pro首销紧俏,深圳线下部分机型有货,线上已抢购一空8月12日,华为P50Pro旗舰手机在华为商城各大授权电商华为授权体验店授权零售商等渠道正式开售。该款手机搭载麒麟9000芯片,处理器采用先进的5nm制程工艺,支持4G网络,售价6DacomTinyPodsANC降噪耳机混合降噪,无惧嘈杂相信现在很多人在选择耳机时都会首选真无线蓝牙耳机产品,相较于有线耳机和传统蓝牙耳机来说,真无线蓝牙耳机很好的摆脱了线材的束缚,日常的听歌视频等使用更加的便捷,同时也可以更好的享受双你真的以为降噪耳机可以降噪吗?一不小心就出问题了随着社会环境的不断变化,耳机已经成为了我们日常生活的重要组成部分。但却很少人意识到,其实耳机也在损害着我们的身体健康,此前就有医生表示不论是降噪耳机还是普通耳机,长时间佩戴耳机都会苹果iOS15公测版Beta5发布了!iOS15正式版还远吗?友友们,苹果iOS15公测版Beta5来啦!(内部版本号19A5318f),昨天出了iOS15Beta5预览版,今天就出了公测版,苹果这效率值得一赞。现已近8月中旬,距离iOS15数字监管升级,失联修复领域如何应对数据安全新挑战?随着大数据时代的快速发展,海量数字化信息被不断地收集传输存储使用。而在这些环节中,数据滥用数据泄露用户数据隐私安全等问题逐渐浮出水面,引起社会各界人士的关注。中国社会科学院金融研究持有大量比特币的娱乐圈明星都有谁?汪峰靠比特币上了次头条这世上不怕有厉害的人,就怕厉害的人比你还努力,这就太恐怖了,意味着你永远可能属于跑得慢的那波,房价不停上涨,你每天如此努力而你存的钱却一天天变成废纸永远赶不上,每天工作12个小时,新款比亚迪唐EV工况续航达到700公里了近日,中华网汽车从工信部获悉,在今年第7批新能源汽车推广应用推荐车型目录中,我们发现了比亚迪新车的多款信息,其中比亚迪的旗舰SUV唐EV的工况续航将再次提升,其工况续航将达到700