什么是B树?
B树是一种数据结构它按排序顺序在其节点中存储数据,B树存储数据使得每个节点按升序包含密钥,这些键中的每一个都有两个对另外两个子节点的引用,Te左侧子节点键小于当前键右侧子节点键多于当前键,如果单个节点具有n个键则它可以具有最大n+1个子节点。
为什么索引在数据库中使用?
想象一下您需要在文件中存储数字列表并搜索该列表上的给定数字,最简单的解决方案是将数据存储在数组中并在新值到来时附加值,但是如果需要检查数组中是否存在给定值则需要逐个搜索所有数组元素并检查给定值是否存在,如果你足够幸运你可以在第一个元素中找到给定的值,在最坏的情况下该值可以是数组中的最后一个元素,我们可以将这种最坏的情况表示为渐进符号中的O(n),这意味着如果您的数组大小最多为n则需要执行n次搜索才能在数组中查找给定值。
你怎么能改善这个时间?最简单的解决方案是对数组进行排序并使用二进制搜索来查找值,每当您向数组中插入一个值时它应该保持顺序,通过从数组中间选择一个值来搜索然后将所选值与搜索值进行比较,如果所选值大于搜索值则忽略数组的左侧并搜索右侧的值反之亦然。
如何在数据库中使用索引?
当B-tree进入数据库索引时这个数据结构变得有点复杂,不仅有一个键还有一个与键相关的值,该值是对实际数据记录的引用,密钥和值一起称为有效负载。
结论
数据库应该有一种有效的方式来存储读取和修改数据,B树提供了插入和读取数据的有效方法,在实际的数据库实现中数据库同时使用B树和B+树来存储数据,用于索引的B树和用于存储实际记录的B+树,除了二进制搜索之外B+树还提供顺序搜索功能,这使数据库能够更好地控制数据库中的非索引值。
数据库调优集训课
为了让大家更快的了解和熟悉数据库调优,给大家推荐一门高级架构师Zilor的在线直播课程~Zilor老师拥有12年软件开发经验,7年大型互联网架构经验。
扫码进集训学习群
7月14日~16日,Zilor老师将带领大家复盘数据库调优的经典场景,从原理到实战,干货满满,让大家快速掌握数据库调优的技巧。
集训课课程目录
听课送福利