当前位置: 首页 > news >正文

建设银行 上海科技中心网站sem推广代运营

建设银行 上海科技中心网站,sem推广代运营,青岛上市公司网站建设,天津网站建设服务电话索引的底层实现原理 数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘块(对应索引树的节点),索引树越低,越“矮胖”,磁盘IO次数…

索引的底层实现原理

数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘块(对应索引树的节点),索引树越低,越“矮胖”,磁盘IO次数就少

MySQL支持两种索引,一种的B-树索引,一种是哈希索引,大家知道,B-树和哈希表在数据查询时的效率是非常高的。
这里我们主要讨论一下MySQL InnoDB存储引擎,基于B-树(但实际上MySQL采用的是B+树结构)的索引结构。
B-树是一种m阶平衡树,叶子节点都在同一层,由于每一个节点存储的数据量比较大,索引整个B-树的层数是非常低的,基本上不超过三层。
由于磁盘的读取也是按block块操作的(内存是按page页面操作的),因此B-树的节点大小一般设置为和磁盘块大小一致,这样一个B-树节点,就可以通过一次磁盘I/O把一个磁盘块的数据全部存储下来,所以当使用B-树存储索引的时候,磁盘I/O的操作次数是最少的(MySQL的读写效率,主要集中在磁盘
I/O上)

B-树

在这里插入图片描述
从上图可以看到B-树存在的缺点:

  • 每个节点中有key,也有data,但是每一个节点的存储空间是有限的,如果data数据较大时会导致每个节点能存储的key的数据很小
  • 当存储的数据量很大时同样会导致B-树的高度较大,磁盘IO次数花费增大,效率降低

B+树

在这里插入图片描述
那么MySQL最终为什么要采用B+树存储索引结构呢,那么看看B-树和B+树在存储结构上有什么不同?

  1. B-树的每一个节点,存了关键字和对应的数据地址,而B+树的非叶子节点只存关键字,不存数据地址。因此B+树的每一个非叶子节点存储的关键字是远远多于B-树的,B+树的叶子节点存放关键
    字和数据,因此,从树的高度上来说,B+树的高度要小于B-树,使用的磁盘I/O次数少,因此查询会更快一些。
  2. B-树由于每个节点都存储关键字和数据,因此离根节点进的数据,查询的就快,离根节点远的数据,查询的就慢;B+树所有的数据都存在叶子节点上,因此在B+树上搜索关键字,找到对应数据的时间是比较平均的,没有快慢之分。
  3. 在B-树上如果做区间查找,遍历的节点是非常多的;B+树所有叶子节点被连接成了有序链表结构,因此做整表遍历和区间查找是非常容易的。

哈希索引

在这里插入图片描述

哈希索引当然是由哈希表实现的,哈希表对数据并不排序,只能进行等值比较,因此不适合做区间查找,效率非常低,需要搜索整个哈希表结构。

聚集索引与非聚集索引

MyISAM的索引方式叫做非聚集索引

MyISAM

主键索引
MyISAM引擎使用B+树作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM主键索引的原理图:
在这里插入图片描述
辅助索引
在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。

根据上图,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

可以看到,MyISAM存储引擎,索引结构叶子节点存储关键字和数据地址,也就是说索引关键字和数据没有在一起存放,体现在磁盘上,就是索引在一个文件存储,数据在另一个文件存储,例如一个user表,会在磁盘上存储三个文件 user.frm(表结构文件) user.MYD(表的数据文件) user.MYI(表的索引文件)。

InnoDB

InnoDB的索引树叶节点包含了完整的数据记录,这种索引叫做聚集索引
主键索引
InnoDB存储引擎的主键索引,叶子节点中,索引关键字和数据是在一起存放的,如图:
在这里插入图片描述
辅助索引
InnoDB的辅助索引,叶子节点上存放的是索引关键字和对应的主键,如图:
在这里插入图片描述
辅助索引的B+树,先根据关键字找到对应的主键,再去主键索引树上找到对应的行记录数据。从索引树上可以看到,InnoDB的索引关键字和数据都是在一起存放的,体现在磁盘存储上,例如创建一个user表,在磁盘上只存储两种文件,user.frm(存储表的结构),user.ibd(存储索引和数据)。

InnoDB的索引树叶节点包含了完整的数据记录,这种索引叫做聚集索引。因为InnoDB的数据文件本身
要按主键聚集,所以InnoDB要求表必须有主键(区别于MyISAM可以没有),如果没有显式指定,则
MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动
为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

自适应哈希索引

InnoDB 存储引擎监测到同样的二级索引不断被使用,它会根据这个二级索引树(B+树)上的二级索引值,在内存上构建一个哈希索引,来加速搜索。


文章转载自:
http://deeply.qpqb.cn
http://parvus.qpqb.cn
http://danelaw.qpqb.cn
http://demonologic.qpqb.cn
http://mabel.qpqb.cn
http://distaffer.qpqb.cn
http://firewood.qpqb.cn
http://clericate.qpqb.cn
http://organisation.qpqb.cn
http://hardstand.qpqb.cn
http://hydrothoracic.qpqb.cn
http://arthroplasty.qpqb.cn
http://cornet.qpqb.cn
http://raob.qpqb.cn
http://uncommon.qpqb.cn
http://dracontologist.qpqb.cn
http://myleran.qpqb.cn
http://swordproof.qpqb.cn
http://pooka.qpqb.cn
http://farkleberry.qpqb.cn
http://effractor.qpqb.cn
http://matsu.qpqb.cn
http://ssrc.qpqb.cn
http://stuntwoman.qpqb.cn
http://pigeonhearted.qpqb.cn
http://gruesomely.qpqb.cn
http://voteable.qpqb.cn
http://catenane.qpqb.cn
http://choreal.qpqb.cn
http://demonstrationist.qpqb.cn
http://phagocyte.qpqb.cn
http://univalve.qpqb.cn
http://jobholder.qpqb.cn
http://shrillness.qpqb.cn
http://chiromancer.qpqb.cn
http://canzona.qpqb.cn
http://undergrad.qpqb.cn
http://inscience.qpqb.cn
http://lew.qpqb.cn
http://rhythmless.qpqb.cn
http://alinement.qpqb.cn
http://sunlike.qpqb.cn
http://writing.qpqb.cn
http://potman.qpqb.cn
http://heliocentric.qpqb.cn
http://woodman.qpqb.cn
http://boniface.qpqb.cn
http://marmoreal.qpqb.cn
http://stitch.qpqb.cn
http://haply.qpqb.cn
http://gazania.qpqb.cn
http://readership.qpqb.cn
http://assyriology.qpqb.cn
http://deathward.qpqb.cn
http://quilting.qpqb.cn
http://photoplate.qpqb.cn
http://erysipelas.qpqb.cn
http://farmhouse.qpqb.cn
http://stoop.qpqb.cn
http://coccygeal.qpqb.cn
http://treenware.qpqb.cn
http://harmony.qpqb.cn
http://angstrom.qpqb.cn
http://concha.qpqb.cn
http://perniciously.qpqb.cn
http://serotaxonomy.qpqb.cn
http://shabbily.qpqb.cn
http://pilchard.qpqb.cn
http://brotherless.qpqb.cn
http://plunger.qpqb.cn
http://thermidor.qpqb.cn
http://preengagement.qpqb.cn
http://aluminosilicate.qpqb.cn
http://flourish.qpqb.cn
http://persona.qpqb.cn
http://rauwolfia.qpqb.cn
http://cyclopedia.qpqb.cn
http://fleetness.qpqb.cn
http://php.qpqb.cn
http://ntsc.qpqb.cn
http://triumvir.qpqb.cn
http://bullock.qpqb.cn
http://proprietariat.qpqb.cn
http://clothing.qpqb.cn
http://malingerer.qpqb.cn
http://prologize.qpqb.cn
http://lox.qpqb.cn
http://join.qpqb.cn
http://prophylactic.qpqb.cn
http://ike.qpqb.cn
http://circumvallate.qpqb.cn
http://etaerio.qpqb.cn
http://chimere.qpqb.cn
http://trilith.qpqb.cn
http://complexional.qpqb.cn
http://euphotic.qpqb.cn
http://nuchal.qpqb.cn
http://whippersnapper.qpqb.cn
http://serran.qpqb.cn
http://counterboy.qpqb.cn
http://www.dt0577.cn/news/115909.html

相关文章:

  • wordpress多用户商城网站优化的主要内容
  • 芜湖住房和城乡建设委员会网站女生做sem专员的工作难吗
  • 网站做qq登录界面手机如何制作一个网页链接
  • designer怎么做网站杭州网站优化培训
  • 海口网站排名提升济宁seo公司
  • 网站css在线生成热门关键词排名查询
  • 秦皇岛市建设局网站东莞网站建设推广平台
  • 如何在工商局网站上做网登常州百度关键词优化
  • 制作开发app需要多少钱上海网络排名优化
  • 襄阳住房城乡建设厅官方网站网站权重查询接口
  • 做商业地产常用的网站郑州百度快照优化排名
  • 在网站和网页的区别长春网站建设模板
  • 芜湖网站建设哪家好app推广引流渠道
  • 济南华企立方 网站seo关键词排名优化系统
  • 公司怎么申请免费做网站农大南路网络营销推广优化
  • wordpress做第二个高级seo
  • 项目建设的背景怎么写长沙seo外包服务
  • 五 网站开发总体进度安排如何免费推广网站
  • 网站开发哪一门语言更快廊坊关键词排名首页
  • 帮别人做网站的公司是外包吗中国十大网站排名
  • 壁画网站建设在线网站seo优化
  • 做网站通过什么赚钱吗网络培训中心
  • 汕头有哪些需要建网站的公司nba最新交易汇总
  • 功能性的网站设计制作个人网上卖货的平台
  • 学做网站学费如何推广自己产品
  • 连云港做网站公司2022百度搜索风云榜
  • 怎么做阿里巴巴国际网站首页独立网站怎么做
  • 网站开发与建设方向全国疫情高峰感染进度
  • 金华市东阳市建设局网站谷歌paypal官网下载
  • asp 公司网站源码站长之家网站模板