程序员经典面试题,为什么数据库索引多用B+树
【金融特辑】光大银行科技部DBA女神带你从0到1揭秘MGR
最近很多小伙伴都参与了面试更换了工作,校招也已经开始了。最近面试了几个实习生,感觉基础能力都不大行,数据库在程序员的面试中占有举足轻重的一个作用。今天我们来讲一讲数据库的索引是什么?
索引,就跟我们的书本的目录一样,如果一本书没有目录,那么你要找某一个知识点,那自然是相当费劲的。数据库的索引就是扮演这样的角色,索引会告诉你对应的数据存放的磁盘地址,就好比目录上面的页数。那么数据库的“目录”究竟长什么样子呢?
常见的数据库索引有下面三种类型,第一是哈希表,哈希表相信大家都已经不陌生了,我们可以将数据库的索引字段后哈希并保存下来。只要哈希算法设计得合理,我们可以非常快地找到对应数据的一个存放地址,然后到对应的存放地址就可以快速地找到数据。那么,哈希索引有什么缺点呢?首先是哈希表比较适合在内存中使用,但是如果要落盘,就比较麻烦了,特别是哈希表扩容的时候,磁盘的很多数据都会修改。第二,哈希表没办法进行一个区间的筛选。
第二种则是数组索引,与上述的哈希表类似,但又有所不同。与哈希索引类似,数组索引的效率也是非常高的,在一个有序数组里面去查找元素,我们只要进行二分查找即可。但是数组索引的问题也是非常地明显,那便是插入非常的麻烦,你插入一个新的元素,就要把后面所有的元素都往后移动一下。所以,数组索引我们一般只有静态数据才会使用。
有序数组都讲了,那么接下来肯定就是二叉树了,我们说的二叉树当然是二叉排序树,二叉排序树相对与数组,比较大的优点是方便插入。但是同时也存在这么一个问题,因为索引的数据可能存在磁盘,那么如果索引的数据超过1000条的时候,就有可能要经过10次才能够找到最终的数据,而磁盘IO的瓶颈在于寻道跟旋转,效率必然会降低。所以,我们要尽量地减少在磁盘中寻道跟旋转的次数,所以多叉树就被广泛应用在数据库索引当中了。而在多叉树中,比较常被使用的,便是B+树。
现在你知道了为什么数据索引有哪些,以及为什么B+树被广泛应用的道理了吧。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
人们需要了解的有关商务旅行的新数据安全规则
【金融特辑】光大银行科技部DBA女神带你从0到1揭秘MGR 如今,网络罪犯致力于窃取人们在手机和笔记本电脑上的数据。那么用户如何保护自己的权利,同时避免这些间谍活动。 当人们出差回家时,海关人员可以合法复制手机和笔记本电脑上的所有数据吗?在以往,其答案通常是肯定的。而在今后,其答案通常可能是“不行”。 几年来,数据搜索量每年都在快速增长。 美国一位联邦法官日前否决了特朗普政府的一项政策,该政策允许美国海关和边境保护局(CBP)自行决定在机场和边境搜索智能手机和笔记本电脑的数据,而不必承担合理怀疑的责任。 美国公民自由联盟和电子边境基金会支持该裁决。他们在2017年代表11名在返回美国时电子设备被搜查的民众状告美国联邦政府。 过去,出入美国被视为第四修正案的“灰色地带”,不清楚美国宪法禁止政府“不合理搜查和扣押”的规定是否适用。 该裁决阐明它确实适用。美国波士顿地方法院法官Denise J.Casper裁定,毫无根据的搜查不是无限的,而且仍然必须合理。 ACLU的一名律师NathanWessler表示,案件尚未结束。法官仍然需要对案件中的一些特定要素作出裁决,其中包括该裁决适用于所有人还...
- 下一篇
【最佳实践】实践总结 阿里云Elasticsearch 智能化运维思路
作者:梵寞—阿里云 Elasticsearch 团队高级开发工程师 阿里云 Elasticsearch 作为一个开箱即用的搜索引擎,其丰富的功能和极低的使用门槛吸引着越来越多的公司和用户选择它作为搜索和数据分析的工具。用户在运维 Elasticsearch 集群时往往会遇到很多难题,具体来说有下面列举的几点: 使用方式往往比较粗糙,默认的设置并不适合每一个集群和业务,非精细化的设计将会极大的增加集群隐患; 集群出现问题,无法及时定位原因、寻找解决方案,低效的沟通或者解决问题的方式可能会使得问题变得愈发严重; Elasticsearch 提供的监控指标繁杂,指标多,意义不明确,需要一定的专业知识才可以理解,缺乏全局视角; 此外,集群潜在的异常无法发现,更不能及时规避风险。 随着越来越多的用户选择使用阿里云 Elasticsearch 服务来支持
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路