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

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

  索引的由来大数据时代谁掌握了数据就是掌握了流量,就是掌握的号召力。面对浩瀚的数据如何存储并非难事, 难点在于如何在大数据面前查询依旧快如闪电! 这时候索引就产生了,索引的产生主要还是借鉴于图书管理员书签的功能。在大数据面前  es   产生了,而我们今天要说的索引却不是它 而是目前中小项目中广泛使用的 mysql   数据库中的索引。本文主题着重介绍索引是什么?索引如何存储?为什么这么设计索引?常见的索引有哪些?最后我们在通过案列来分析如何命中索引以及索引失效的部分场景。 什么是索引
  索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构,可以提高查询的速度。  索引是一种数据结构,以协助快速查询,更新数据库中的数据 。 mysql   的索引主要由 B+Tree   进行存储。在存储主题上又分为聚簇索引和非聚簇索引。聚簇索引聚簇索引从字面上理解就是聚集在一起。所以凡事索引和数据存放在一起的我们就叫做聚簇索引。在mysql   中 INNODB   的主键索引就是采用的聚簇索引,因为在叶子节点负责存放数据,而非叶子节点负责存放索引。而除了主键索引外其他索引则是非聚簇索引,因为其他索引的叶子节点存储的是主键索引的地址指向。非聚簇索引在 MyISAM   引擎中就是非聚簇索引,我们通过它的文件结构也能够看出索引和数据是分开存放的。 非聚簇索引也会带来一些问题。诸如回表在 INNODB   中非主键索引就是非聚簇索引,同时这种非主键索引也会带来一个问题就是二次索引也称回表。因为我们通过非主键索引是无法定位到最终数据的。大部分情况下我们是需要在根据主键索引进行第二次查找的。加入你有一个索引idx_nameselect name from t where name=13   发生一次索引,不会回表查询select * from t where name=13   发生两次索引,会发生回表上面第一个sql 不会发生回表是因为我门的sql 发生了索引覆盖,意思是idx_name 这颗树已经覆盖了我们查询的范围。索引存储结构先说结论 mysql   中索引是通过 B+ Tree   进行存储的。但是在 mysql   中一开始是采取的 二叉树存储的。关于树形存储结构都是二叉树。那么我们是mysql   中不采用二叉树、红黑树呢?下面我们来分析下采用二叉树、红叉树分别会带来哪些问题。二叉树二叉树是根据顺序在根据大小判断其存储的左右节点的。这就导致如果我们是按递增ID作为索引的话,最终就导致二叉树变成一颗偏向一边的树,换个角度看其实就是链表。
  而针对一张表我们往往就是ID作为索引的居多。而ID采用自增策略的居多,所以如果索引采用的是二叉树的,毋庸置疑销量基本无提升,这也是为什么官方放弃 二叉树   作为索引存储的数据结构。而二叉树一共有如下几种极端情况
  平衡二叉树在开始红黑树之前,我们需要先了解下有种临界状态叫平衡二叉树。平衡二叉树又叫做Self-balancing binary search tree 。 平衡二叉树是二叉树的一种特例在二叉树中有一个定义平衡度(平衡因子)的概念。他的公式是左右高度的绝对值。当这个平衡度<=1的时候我们就称之为平衡二叉树在平衡二叉树中他的高度是最稳定的,换句话说平衡二叉树和其他二叉树相比能够在相同的节点情况下保证树的高度最低;这也是为什么mysql中索引的结构是一种平衡二叉树的升级版
  红黑树
  红黑树实际上是一颗平衡二叉树;所以在构建的过程中他会发生自平衡
  因为二叉树在极端的情况会变成一个链表,针对链表的问题红黑树的自平衡特性就完美的规避了二叉树的缺点。那么为什么最终索引也不是选择红黑树呢?仔细观察能够发现红黑树是一颗标准的二叉树。他所能容纳的最大节点数和他的高度正好成二的次方这个关系。也就是说假设红黑树的高度是h ,那么他能容纳最多的节点为 2^h。这样看来在数据量过大时,通过红黑树去构建貌似这颗二叉树高度就过去庞大了。高度也高给我们查询就带来更多次交互。要知道每个节点都是存储在硬盘中的,那么每一次的访问都会带来一次IO消耗。所以为了能够提高查询效率 mysql   最终还是没有选择红黑树。
  ①、每个节点要么红色要么黑色
  ②、根节点是黑色的
  ③、叶子节点是黑色的
  ④、红色节点的子节点一定是黑色的
  ⑤、从一个节点出发,到达任意一个叶子结点(NULL)路径上一定具有相同的黑色节点(保证了平衡度<=2)
  BTree
  BTree的设计主要是针对磁盘获取其他存储的一种平衡树(不一定是二叉这里往往指的是多叉)
  B树非常适合读取和写入相对较大的数据块(如光盘)的存储系统。它通常用于数据库和文件系统。总结下BTree 具有如下特点:
  ①、至少是2阶,即至少有两个子节点 ②、对于m阶BTree来说,非根节点所包含的关键词个数j需要满足 (m/2)-1<=j<=m-1 ③、除叶子结点外,节点内关键词个数+1总是等于指针个数 ④、所有叶子结点都在同一层 ⑤、每个关键字保存实际磁盘数据B+Tree
  B+Tree 是BTree的一种变体。BTree节点里出了索引还会存储指针数据,而B+Tree仅存储索引值,这样同样空间节点能够存储更多的索引  B+Tree 因为压缩了数据存储空间,这样就能够在相同高度的BTree上存储更多的索引,这样更加提高索引定位销率。
  Hash表
  ①、hash索引无法进行范围查询,因为上述的hash结构是没有顺序的,hash索引只能实现等于、In等查询 ②、hash值是针对元数据的一种散列运算。hash值得大小并不能反应元数据的大小。元数据a 、b对应的hash值有可能是3333、2222,而实际上上a
全国铁路4月8日调图,你家乡列车有变化没?据悉,4月8日零时起,全国铁路将实行新的列车运营图。这次全国铁路调图主要是基于以下原因一是优化中东部地区高铁运行径路,丰富旅客出行选择。利用即将开通运营的黄冈至黄梅高铁的联络线功能3。21空难过去好几天了,现场各种混合气味难闻,还要挖下去吗?昨晚指挥部已确认321东航MU5735航班机上123名乘客和9名机组人员已全部遇难,默哀!!!由于飞机是垂直坠落,随着下降巨大的冲击,把人都冲向了机头位置,飞机爆炸后一起坠入泥土。老人睡觉去世,儿女众多,没人在身边,你觉得可怜吗?老人睡觉去世,是最幸福的去世方式,比安乐死还要好,只不过是对子女与家人没有事前遗嘱,没有见最后一面感觉到遗憾,其实对老人来说是不辞而别比看着痛苦离去要好的多!老人睡觉去世有很多这样孩子们能不能不花老人的养老金?现在国家对老人年人发养老金,是国家富強,人民幸福的表现,可也不能发的太多,有些老人的养老金每月大几千,剩至上万,怎么用得完,所以,现在有很多老人的养金成了养儿金,养孙金。让子孙过着应届大学生考外省省会城市公务员的经历是怎样的?考不上不高兴,考上了也是件纠结的事。一枚基层公务员对此非常有感触。谈谈我的看法。这要分成外部因素和内部因素了。外部因素1应届大学生和往届毕业生的区别。应届大学生的特点是社会经验不足女士已到退休年龄,社保已缴20年但职工医疗保险只缴了5年,职工医保能补缴吗?我刚刚退休,知道一点,把自己的情况说一下吧。退休时养老交了不到十八年,医保更少,不够二十五年,算算差了八年多,于是补了八年多的,按月补缴,花了两万五。医保处的人说,也可以不补,转入儿子高三了,他说没考上就去参军,高中生当兵有出息吗?我小侄去年9月去西藏边境当后勤兵,不为别的,只为去参军煅炼,把臭毛病坏习惯改一改,提高道德思想品质。他高中毕业后还很幼稚,小小年纪学会抽烟赌钱,成天跟几个小混混打游戏浑浑噩噩我哥不有哪些教训,你会记住一辈子,并希望大家也明白?1牙齿上面出现那种黑线的时候,不补的话离拔牙就不远了。2去洗脚按摩别问人家为啥干这行。3公关不是吃吃喝喝,不懂就不要进入。4再忙也不要让你父母自己去医院,智能化的医院,年轻人都要问在一线大城市的生活,为什么有人充满希望,有人却充满痛苦?什么叫希望,仅是希望什么?什么又叫痛苦?痛并快乐着,是白岩松说的!只要别把自己的快乐,建立在别人的痛苦之上!再痛苦也要笑,每天愁容满面,也会带来霉运的!在一线大城市生活,哪个人不是换成高铁后,原来的绿皮车都到哪里去了?谢谢(悟空)邀请。中国幅原辽阔,地大物博,省级城市及省会城市以及各大中城市,都已通达高铁,绿皮车都已退出了这些城市的运行,可是在不发达地区,祖国的西北,东北密林深处,各铁路局局管区生猪价格下跌,养殖成本却在上涨,普通养殖户还应该继续坚持吗?普通养殖户坚持不下去了,一位农村普通养殖户告诉我们,他养了60多头猪,每天都得喂饲料,基本上是吃一斤赔一斤,现在豆粕都已经2。7元一斤了,看着猪吃掉的饲料很是心疼,但是只能硬挺着,
春晚看点多!秦岚落泪嗓子哑,马丽炸毛,撒贝宁穿高跟赢麻了爆竹声中一岁除,春风送暖入屠苏。在全国观众的期待下,2023兔年春晚已经拉开了帷幕,每个节目都充满了年味儿和欢声笑语。不出意外,每年都是大型的真香现场,那么今年春晚都有哪些看点呢?正月初五破五节,牢记1不出,2要做,吃3样,忌2事,送穷迎吉祥天南地北大拜年导读我一直觉得,初一到初三才能称之为大年,到了初三之后,应该称之为正月,现在说的初五,也就是正月初五,俗称破五。到了这个时间段,我们就应该好好准备一下,开始踏上返程的东北的丈母娘来了女婿很着急张先生家有台美菱冰箱,他反映,最近制冷功能突然坏了,怕是要等到年后才能修好。1818黄金眼一家子留杭过年冰箱坏了能否提供备用张先生上周三左右,因为我们冰箱有很多包好的饺子和面条之类狂飙红颜祸水,大佬的女人陈书婷,才是强哥黑化的催化剂花煜寒文此文为花煜寒对狂飙电视剧人物剧情的解读,每一期涉及不同的人物与剧情,如果喜欢的话,请右上角点关注文接上回。还记得那一夜吗?强哥被一个艳丽的女人勒着脖子差点挂掉,还流下了痛苦大年初四,快来迎灶神扔穷!今天是大年初四按照传统习俗是家家户户迎灶神的日子人们往往在这一天选择在家中团聚灶神又叫灶王灶君灶王爷是中国古代神话传说中的司饮食之神传说中的灶神体态臃肿圆滑世故掌管着一家人的财气祸Dunk海盐蓝成2023首匹黑马!3招教你如何避雷!兔年到了,你是否穿上了自己喜欢的新鞋了呢?最近,小编发现,得物上有一双很火的鞋NikeDunkLowIvoryHyperRoyal白蓝配色,不仅有2。7万名得物er已经入手,更有6POP流行趋势网风衣女装TOP款式热搜排行榜综述报告数据基于7月份用户下载互动数据榜单TOP100,其中新锐设计占据大部分比率,设计点上环绕这解构拼接荷叶边装饰等工艺应用,应用帽口延长浮水等部位塑造出披肩视觉的风衣比率12,DIOR用一场高订秀告诉我们WhoisJosephineBaker在一群花花绿绿夸张廓形的高订发布秀中,DIOR如一股清流出现在大众视野中。正如DIOR女装创意总监MariaGraziaChiuri所说,这一高订系列是奢华20年代的当下演绎,更干一个吃过大苦的人,会有以下五个表现,值得尊重和学习作者拾壹言01序言每个人的一生,都不是一帆风顺的,吃过苦的人会变得更加坚强和努力。对于每个人来说,吃过苦之后,都会有不同程度的变化和成长。在人生的道路上,吃过苦,才知道什么是真正的不要试图改变任何人不要试图改变任何人,也不要指望身边的人会因为你而改变。他们只会因为你的口袋而自动改变。成年人的世界就一条准则,利益面前,先小人后君子。永远别替别人做决定不然到时候背锅的人可就是你了年是我的劫像我这样逃避过年的人,应该没谁了吧?来头条看看别人的快乐,心里算算假期还剩下好几天。小时候逃避过年,是害怕父母的争吵,虽然平时也吵,但过年更凶。现在逃避过年,是害怕这种孤独的冷漠,