有了这几张图,再也不怕面试被问MySQL!
想象一下,你手上有一本数学教材,但是目录被人给撕掉了,现在要你翻到讲三角函数的那一页,你该怎么办?
没有了目录,就只有两种办法,要么一页一页的翻,要么随机翻,直到找到三角函数的那一页。
对于我们数据库也是一样的道理,如果我的数据表没有“目录”,那要查询满足条件的记录行,就得全表扫描。
如果没查到,就根据数据节点所在的区间,来到下一级分叉的节点,继续这个过程。
因为分叉很多,所以这棵B树变得非常扁平化,即便是非常大的数据量,也只需要很少几次IO访问就能完成查找,这一下查询速度直接起飞了。
有很多数据库小伙伴都采用了B树来作为数据存储和索引的数据结构。
什么,你要问我是不是也用了这个?
B树虽然好,但还是有一些问题。
比如,它的查询效率不太稳定,有些在根节点或者根节点附近能找到,搜索起来就很快。如果在叶子节点上,那查询起来就很慢,有的快有的慢,这对追求性能稳定的程序员们来说,就不是太友好。
另外,它也不适合用来做范围查找,因为数据散落在不同的节点上,要查询某个范围的数据,就需要在B树上不同层级节点间进进出出,非常麻烦。
所以我在它基础之上,改进了一下,我把数据全部都放在叶子节点上,这样不管查询哪个数据,最终都要走到叶子节点,解决了查询性能不稳定的问题。其次,上面的这些节点都不存储数据了,腾出来的空间用来存储指向其他节点的指针,这样一来获得了一个额外的收获,中间节点可以分的叉更多了,整个树变得更加扁平,进一步减少IO的次数。
最后,我再把叶子结点用指针连接起来,这样就能解决范围查询的问题了,真是一颗完美的B树,哦不对,现在不能叫B树了,现在是B树的升级版,B+树!
自从用上了这样的结构,我的查询性能提升了不少,几百万级别的数据都能轻松拿捏了!除了使用B+树,在一些特定的场景下,我还可以使用哈希表和位图来做索引,查起来比B+树更快!过去这些年,虽然各种新的数据库层出不穷,但我因为简单好用,稳定可靠,而且还支持事务,所以我依然是许多互联网公司首选的数据库。进入云计算时代以后,很多软硬件都上云了,我也不甘落后,开始在云端为大家服务。👆点击视频快速了解“我”吧~有了云,你只需要一个地址和账户密码就能使用我了,不用再自己去安装,更省去了很多运维的麻烦,全部由云服务厂商为你解决,简直不要太方便。越来越多的公司和个人开发者都开始在云端来使用我了,其中不得不提的就是阿里云。
阿里云瑶池数据库旗下的云数据库RDS把我的代码拉了一个分支,对我进行了深度改造,经过双十一高并发、海量数据的考验,把我的性能又提升了一大截。
哦对了,要告诉你一个好消息,最近,阿里云正在搞活动,推出了一个99计划,助力中小企业无忧上云,一年只需要99元就能在云端用上我。
原来需要一千多块钱一年的云数据库RDS MySQL,现在只需要99元了,无论你是企业开发部署,还是个人开发者,亦或是学习数据库的初学者,这都是一次绝佳的机会。阿里云RDS MySQL,作为年轻人的第一台数据库,大品牌值得信赖,极致的性价比,是开发者数据托管的最优选择!
只需要99元,就能拥有我了,赶快来薅一把羊毛,点击文末「阅读原文」一键直达。我在阿里云上等你来哦~
/ END /
点击 阅读原文 查看 云数据库RDS 更多内容