B+树及数据库索引的应用
2023-09-14 08:58:55 时间
B树
每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null。
B+树
只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。
后来,在B+树上增加了顺序访问指针,也就是每个叶子节点增加一个指向相邻叶子节点的指针,这样一棵树成了数据库系统实现索引的首选数据结构。
原因有很多,最主要的是这棵树矮胖,呵呵。一般来说,索引很大,往往以索引文件的形式存储的磁盘上,索引查找时产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的时间复杂度。树高度越小,I/O次数越少。
那为什么是B+树而不是B树呢,因为它内节点不存储data,这样一个节点就可以存储更多的key。
在MySQL中,最常用的两个存储引擎是MyISAM和InnoDB,它们对索引的实现方式是不同的。
MyISAM
data存的是数据地址。索引是索引,数据是数据。
InnoDB
data存的是数据本身。索引也是数据。
相关文章
- [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
- C# 数据库存储过程的讲解应用
- 【C/C++学院】(24)Oracle数据库编程--管理oracle
- 【ASM学习】普通数据库向ASM实例的迁移(二)
- TiDB数据库在汽车之家的应用与实践
- 傻瓜式实战Oracle10g RMAN之数据库备份和恢复
- php 数据库导入导出类
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
- Atitit 存储与数据库性能调优流程目录1. 数据库出现性能瓶颈,对外表现有几个方面:
- paip.提升性能----数据库连接池以及线程池以及对象池
- 如何在 SAP BTP Java 应用里使用 SAP HANA 数据库
- BigData之MongoDB:MongoDB(基于分布式文件存储的非关系型数据库)的简介、下载、案例应用之详细攻略
- ASP.NET MVC - SQL 数据库
- Flask基础:环境搭建+配置+URL与试图之间的映射+重定向+数据库连接
- 补习系列(16)-springboot mongodb 数据库应用技巧
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
- lsnrctl start 命令未找到 数据库连接报错“ORA-12541: TNS: 无监听程序”
- mysql导出 数据库字典
- Oracle数据库的用户安全审核的几种策略以及实际生产中的应用
- 电商小程序实战教程-将用户信息存入数据库
- Qt数据库应用9-数据导出组件使用方法
- VC++数据库应用开发