mysql btree结构_MySQL索引的数据结构及算法原理(BTree索引)

MySQL支持多种存储引擎,而各类存储引擎对索引的支持也各不相同,所以MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。node1 数据结构及算法基础算法1.1 索引的本质数据库MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。也就是说索引是数据结构数据结构数据库查询是数据库的最主要功能之一。数据自己的组织结构不可能彻底知足各类数据结...
摘要由CSDN通过智能技术生成

MySQL支持多种存储引擎,而各类存储引擎对索引的支持也各不相同,所以MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。node

1 数据结构及算法基础算法

1.1 索引的本质数据库

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。也就是说索引是数据结构

数据结构

数据库查询是数据库的最主要功能之一。数据自己的组织结构不可能彻底知足各类数据结构(例如,理论上不可能同时将两列都按顺序进行组织),因此,在数据以外,数据库系统还维护着知足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就能够在这些数据结构上实现高级查找算法。这种数据结构,就是索引。性能

例如:优化

474e4175ba097fdda77767ca361ef71a.png

上图展现了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并非必定物理相邻的)。为了加快Col2的查找,能够维护一个右边所示的二叉查找树,每一个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就能够运用二叉查找在O(log2n)的复杂度内获取到相应数据。spa

1.2 B-Tree和B+Tree操作系统

目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree做为索引结构翻译

1.2.1 B-Tree设计

定义:

定义一条数据记录为一个二元组[key, data],key为记录的键值,对于不一样数据记录,key是互不相同的;data为数据记录除key外的数据。那么B-Tree是知足下列条件的数据结构:

1. d为大于1的一个正整数,称为B-Tree的度。

2. h为一个正整数,称为B-Tree的高度。

3. 每一个非叶子节点由n-1个key和n个指针组成,其中d<=n<=2d。

4. 每一个叶子节点最少包含一个key和两个指针,最多包含2d-1个key和2d个指针,叶节点的指针均为null 。

5. 全部叶节点具备相同的深度,等于树高h。

6. key和指针互相间隔,节点两端是指针。

7. 一个节点中的key从左到右非递减排列。

8. 每一个指针要么为null,要么指向另一个节点。

9. 若是某个指针在节点node最左边且不为null,则其指向节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值