树树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合 。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树
文章插图
根结点 : A 父节点 : A是B,C的父节点叶子节点:D,E是叶子节点树的深度/树的高度:高度为3B+树前面讲了索引的基本原理,数据库的复杂性,又讲了操作系统的相关知识,目的就是让大家了解,任何一种数据结构都不是凭空产生的,一定会有它的背景和使用场景,我们现在总结一下,我们需要这种数据结构能够做些什么,其实很简单,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级 。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来) 。
【mysql:索引之二叉树初步理解】
文章插图
b+树性质索引字段要尽量的小:通过上面的分析,我们知道IO次数取决于b+数的高度h,假设当前数据表的数据为N,每个磁盘块的数据项的数量是m,则有h=㏒(m+1)N,当数据量N一定的情况下,m越大,h越小;而m = 磁盘块的大小 / 数据项的大小,磁盘块的大小也就是一个数据页的大小,是固定的,如果数据项占的空间越小,数据项的数量越多,树的高度越低 。这就是为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半 。这也是为什么b+树要求把真实的数据放到叶子节点而不是内层节点,一旦放到内层节点,磁盘块的数据项会大幅度下降,导致树增高 。当数据项等于1时将会退化成线性表 。
索引的最左匹配特性:当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询 。比如当(张三,F)这样的数据来检索时,b+树可以用name来指定搜索方向,但下一个字段age的缺失,所以只能把名字等于张三的数据都找到,然后再匹配性别是F的数据了, 这个是非常重要的性质,即索引的最左匹配特性 。
MySQL【九】树
标签:baidu 固定 ref 磁盘 要求 mysql 次数 第一个 inf
- mysql:数据库之删除记录对自动增长的影响
- mysql数据库中的sql语句——作业题讲解-2
- MySQL教程4 MySQL8运算符 22.向JSON数据中插入新值 学习猿地
- insert mysql数据库介绍:创建和读取(select)数据库的数据
- 学习猿地 PHP教程 20 PHP连接MySQL 4.修改数据操作
- C#如何动态创建MySql数据库和表
- mysql:数据库之外键的两个作用及总结
- MySQL云数据库创建、配置与使用教程
- 引热议|《大侦探8》新春演唱会定档,春暖花开海报细节线索引热议
- 1.2 MySQL 数据库介绍