专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

索引数据结构千千万,为什么BTree独领风骚

  索引的由来大数据时代谁掌握了数据就是掌握了流量,就是掌握的号召力。面对浩瀚的数据如何存储并非难事,难点在于如何在大数据面前查询依旧快如闪电!这时候索引就产生了,索引的产生主要还是借鉴于图书管理员书签的功能。在大数据面前es产生了,而我们今天要说的索引却不是它而是目前中小项目中广泛使用的mysql数据库中的索引。本文主题着重介绍索引是什么?索引如何存储?为什么这么设计索引?常见的索引有哪些?最后我们在通过案列来分析如何命中索引以及索引失效的部分场景。什么是索引
  索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构,可以提高查询的速度。索引是一种数据结构,以协助快速查询,更新数据库中的数据。mysql的索引主要由BTree进行存储。在存储主题上又分为聚簇索引和非聚簇索引。聚簇索引聚簇索引从字面上理解就是聚集在一起。所以凡事索引和数据存放在一起的我们就叫做聚簇索引。在mysql中INNODB的主键索引就是采用的聚簇索引,因为在叶子节点负责存放数据,而非叶子节点负责存放索引。而除了主键索引外其他索引则是非聚簇索引,因为其他索引的叶子节点存储的是主键索引的地址指向。非聚簇索引在MyISAM引擎中就是非聚簇索引,我们通过它的文件结构也能够看出索引和数据是分开存放的。非聚簇索引也会带来一些问题。诸如回表在INNODB中非主键索引就是非聚簇索引,同时这种非主键索引也会带来一个问题就是二次索引也称回表。因为我们通过非主键索引是无法定位到最终数据的。大部分情况下我们是需要在根据主键索引进行第二次查找的。加入你有一个索引idxnameselectnamefromtwherename13发生一次索引,不会回表查询selectfromtwherename13发生两次索引,会发生回表上面第一个sql不会发生回表是因为我门的sql发生了索引覆盖,意思是idxname这颗树已经覆盖了我们查询的范围。索引存储结构先说结论mysql中索引是通过BTree进行存储的。但是在mysql中一开始是采取的二叉树存储的。关于树形存储结构都是二叉树。那么我们是mysql中不采用二叉树、红黑树呢?下面我们来分析下采用二叉树、红叉树分别会带来哪些问题。二叉树二叉树是根据顺序在根据大小判断其存储的左右节点的。这就导致如果我们是按递增ID作为索引的话,最终就导致二叉树变成一颗偏向一边的树,换个角度看其实就是链表。
  而针对一张表我们往往就是ID作为索引的居多。而ID采用自增策略的居多,所以如果索引采用的是二叉树的,毋庸置疑销量基本无提升,这也是为什么官方放弃二叉树作为索引存储的数据结构。而二叉树一共有如下几种极端情况
  平衡二叉树在开始红黑树之前,我们需要先了解下有种临界状态叫平衡二叉树。平衡二叉树又叫做Selfbalancingbinarysearchtree。平衡二叉树是二叉树的一种特例在二叉树中有一个定义平衡度(平衡因子)的概念。他的公式是左右高度的绝对值。当这个平衡度1的时候我们就称之为平衡二叉树在平衡二叉树中他的高度是最稳定的,换句话说平衡二叉树和其他二叉树相比能够在相同的节点情况下保证树的高度最低;这也是为什么mysql中索引的结构是一种平衡二叉树的升级版
  红黑树
  红黑树实际上是一颗平衡二叉树;所以在构建的过程中他会发生自平衡
  因为二叉树在极端的情况会变成一个链表,针对链表的问题红黑树的自平衡特性就完美的规避了二叉树的缺点。那么为什么最终索引也不是选择红黑树呢?仔细观察能够发现红黑树是一颗标准的二叉树。他所能容纳的最大节点数和他的高度正好成二的次方这个关系。也就是说假设红黑树的高度是h,那么他能容纳最多的节点为2h。这样看来在数据量过大时,通过红黑树去构建貌似这颗二叉树高度就过去庞大了。高度也高给我们查询就带来更多次交互。要知道每个节点都是存储在硬盘中的,那么每一次的访问都会带来一次IO消耗。所以为了能够提高查询效率mysql最终还是没有选择红黑树。
  、每个节点要么红色要么黑色
  、根节点是黑色的
  、叶子节点是黑色的
  、红色节点的子节点一定是黑色的
  、从一个节点出发,到达任意一个叶子结点(NULL)路径上一定具有相同的黑色节点(保证了平衡度2)
  BTree
  BTree的设计主要是针对磁盘获取其他存储的一种平衡树(不一定是二叉这里往往指的是多叉)
  B树非常适合读取和写入相对较大的数据块(如光盘)的存储系统。它通常用于数据库和文件系统。总结下BTree具有如下特点:
  、至少是2阶,即至少有两个子节点、对于m阶BTree来说,非根节点所包含的关键词个数j需要满足(m2)1jm1、除叶子结点外,节点内关键词个数1总是等于指针个数、所有叶子结点都在同一层、每个关键字保存实际磁盘数据BTree
  BTree是BTree的一种变体。BTree节点里出了索引还会存储指针数据,而BTree仅存储索引值,这样同样空间节点能够存储更多的索引BTree因为压缩了数据存储空间,这样就能够在相同高度的BTree上存储更多的索引,这样更加提高索引定位销率。
  Hash表
  、hash索引无法进行范围查询,因为上述的hash结构是没有顺序的,hash索引只能实现等于、In等查询、hash值是针对元数据的一种散列运算。hash值得大小并不能反应元数据的大小。元数据a、b对应的hash值有可能是3333、2222,而实际上上ab。所以我们无法通过hash值进行排序,从而hash索引无法进行排序、对于组合索引来说,在BTree中我们有最左匹配原则,但是在hash索引中是不支持的。因为组合索引整个映射成hash值,我们通过联合索引中部分值进行hash运算得带的值与hash索引中是没有关系的、hash索引在查询时是需要遍历整个hash表的。这点我们Java中的HashMap一样、hash索引在数据量少的情况下比BTree快。但是当hash冲突比较多的时候定位就会比BTree慢很多了。
  总结现在看来数据库运行的很牛逼,而且索引也很快,但这并不是一口吃成胖子的,了解了索引的底层数据结构后我们也能够了解mysql也是一步一步尝试过来的,索引也是不断的优化而成的。说不定以后还会有其他结构产生,只能说每种数据结构都是最好的,前提是在特定的场景下。本专栏最后一篇我们将介绍下mysql的索引如何命中,以及那些场景导致索引失效。然后再着重介绍下高频面试题回表索引下推
  来源:https:juejin。cnpost7168268214713974798

北京航空航天大学真的要来合肥建校吗?感谢邀请。负责任的回答一波,是真的,地点已经选好了,落户于合肥新站高新区少荃湖旁,2018年开始招收硕士博士研究生。(图文无关)北航合肥科学城选址在合肥新站高新技术产业开发区,总占公益一类事业单位,自收自支编制人员工资怎么供给?自收自支事业编顾名思义就是单位自负盈亏,自行核定员工工资标准,从收益中拿出资金承担在职在编人员的工资福利,财政概不拨款负担。因此,自收自支事业编虽然名义上有一纸编制傍身,可以按事业乡镇农业服务中心事业单位待遇如何?作为体制内人员,我按照我们地区的情况来回答你乡镇农业服务中心事业单位待遇如何吧。乡镇农业服务中心属于事业性质,正股级单位,和乡镇其他部门待遇基本上没有多大区别,就是多一个农药防害补相同条件下,为什么事业单位和企业单位退休工资相差那么多?要精确回答这个问题,就必须要先去回顾一下我国的双轨制劳动保障制度的历史,从建国初期到改革开放这段时期,我国的劳动保障制度一直实行的是机关事业单位和国有企业单位的双轨制政策,即机关事劳务派遣跟合同工有什么差别?工资待遇一样吗?首先,劳务派遣是指由劳务派遣机构与派遣劳工订立劳动合同,然后把劳动者输送到其它用工单位的行为。劳务派遣根合同工的差别有以下几点1签订合同的对象不同劳务派遣是和劳务派遣公司签合同合同现在工资都这么高了么?为什么我回村别人都问你工资几万?根据统计,我国城镇居民月收入大多在3000元附近,月收入超万元的不足30。本人也是来自农村,在一部分农村人眼睛,城里人都是高收入人群,家家都有钱。所以他们认为你既然在城里有一份正式长治西边有什么规划?长治市规划勘测局发布关于漳泽湖国家湿地公园及周边地区发展概念规划生态保护及景观规划和水环境综合治理专项规划的公示,具体如下漳泽湖国家湿地公园及周边地区发展概念规划,一规划背景随着城枪毙死刑犯前,验明正身时,死刑犯拒不承认自己的身份,该怎么办?这可真是个难题。你说吧,打不能打,刑讯逼供是违法的,也不能作为定罪量刑的证据,骂他吧,没有毛用。这可怎么办呢?想来想去,只有一个办法用痒痒挠,挠他痒痒。等他痒得受不了啦,只好承认。697071岁养老金调整差距有多大?697071岁养老金调整会有多大差距,这个没有设置前提条件是不好做对比的。首先可以肯定的是69周岁以及70周岁以上退休人员养老金调整幅度肯定会有一些区别。目前各省在落实养老金调整方看守所里有人会欺负死刑犯吗?现在看守所都有监控,死刑犯和其他犯人在环境上没有区别,在号里的规矩都一样,看守所里的人大部分人都是能重新回归社会的,只是时间长短问题,这个根据你犯的事的严重程度,都是成年人,犯多大生活在北京是什么感觉?做为一线大城市北京到底好在哪里?优越在哪里,都喜欢往北京跑?很多人都认为北京有深厚的文化底蕴,是一个古典与现代结合的城市。大城市有大的发展,升迁机会大,北京的旅游资源也十分丰富,景
重磅发声!兔年怎么投?多家公募巨头最新研判2023年新春之际,中国基金报邀请多家基金公司投资总监或知名基金经理展望新的一年投资前景和趋势,供广大基民和股民参考。景顺长城总经理助理股票投资部总经理余广国内将开启新一轮经济周期兔年春晚女星穿着各有特色争奇斗艳,你觉得谁最美?央视春晚结束了,可是关于兔年春晚的讨论并没有结束。有的人讨论哪个音乐节目最好听,哪个小品最好看?今天我们就来比比哪个女星最美?咱们先从女主持人开始。今年的女主持人大换血趋于年轻化。小卡第三代签名鞋曝光,NB为拉文推出专属款,品牌做成了么?又是毫无预警的一次,NB为小卡推出的第三代签名鞋曝光了,还有为拉文做的FreshFoamBB也亮相了,两双一前一后,在新春之际突然来了一次王炸,结合下今年众多球星上脚的TWOWXY正月初四,十堰这家企业春节不停工,全力赶订单视频加载中原标题新春走基层湖北炫彩春节不停工全力赶订单十堰广电讯(全媒体记者马凯俊陈剑锋通讯员刘爱理)1月25日(农历正月初四),位于十堰经济技术开发区的湖北炫彩汽车零部件科技有限再小的个体,都有自己的品牌01hr每个人来到这个世上都是独一无二的个体,没有你的品牌,我有我的口碑,不一样的人生又有什么可以比较的呢。以前常常会陷入没有意义的比较中,不只是乱了自己的分寸,也影响了自己生活的新春走基层丨一枝独秀!新能源汽车迎开门红,降价潮或将席卷整个行业点蓝字关注,不迷路编者按新春佳节来临,证券时报记者奔赴祖国四面八方,以系列报道的方式,追寻新春的气息,记录春天的故事,带您一起感受烟火升腾里中国经济的强劲活力。在往年,1月份一般是明日年初六,牢记1要出,2要清,吃3样,破除禁忌,新年事事顺天南地北大拜年通宵灯火人如织,一派歌声喜欲狂,转眼之间,春节长假已经过去了,明天就是大年初六,大家都会整装待发,返回到工作岗位,年味儿也渐渐的淡了。在民间习俗里面,大年初五是破五节人车人车人车人车人导航红到发紫,文旅部再发提醒!这个兔年春节各地景区人气爆棚朋友圈里晒出的景点照无一例外,全是人从众的壮观画面据杭州西湖风景名胜区统计大年初二西湖景区接待客流量33。17万人次与上年同比增长632。23浙江多地景潍坊青州烟火气回归旅游人气旺伴随着兔年的到来,青州古城换上了红红火火的新年妆,吸引了大批游客。正月初二,古城游人如织。游古城品美食赏民俗文化火红的古城与红火的人群,映衬着古城红红火火的年味。今天特意带着家人来郑重发布!春节泰国选岛地图!头写秃!今天给大家做一个简单的攻略与推荐,主要介绍一下去泰国怎么选岛怎么玩。收藏这篇文章让萌新也能吃透泰国海岛!01hr整体概念先来给大家介绍一下泰国旅游的一些概念吧。府首先给大家讲的府,长兴岛郊野公园再获国家级新殊荣!春节有些啥活动?爱申活暖心春2023年伊始,上海长兴岛郊野公园全域旅游度假区再传喜讯,入选国家体育总局文化发展中心2022中国体育旅游精品项目且获评2022年中国体育旅游精品景区。近些年,每逢节假日长兴岛俨然
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网