Mysql InnoDB b+树的高度

作者&投稿:松连 (若有异议请与网页底部的电邮联系)
~ 为什么Mysql考虑使用B+树,而不是B树,其实我们可以先了解下B树和B+树的特点来看下。

※ 树的每个结点都会存储数据
※ 单次查询不一定要遍历到树的根部,平均查询时间会比较快

※ 非叶子节点不存储数据,只存储(冗余)索引,索引包含主键和指针
※ 叶子节点才真正存储数据
※ 每个叶子节点互相链表相连,保证了范围查询的时效性(页之间用双向链表连接,数据间用单项链表链接)

InnoDB最小存储单位是页,叶子节点和非叶子节点最小单位都是页,页大小Mysql 默认设定16384字节,约为16KB。

我们假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节
我们一个页中能存放多少这样的索引元素,其实就代表有多少指针,即16384/14=1170;

高度为2的B+树能存放1170×16=18720
高度为3的B+树能存放1170×1170×16 = 21902400

InnoDB中B+树高度一般为1-3层,它就能满足千万级的数据存储。

在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次IO操作即可查找到数据。


塔城市13677962298: mysql innodb 有哪些索引类型 -
温钱复方: 1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理2、hash索引:a 仅仅能满足"=","IN"和""查询,不能使用范围查询 b 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引 c 只有Memory存储引擎显示支持hash索引3、FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)4、R-Tree索引(用于对GIS数据类型创建SPATIAL索引)

塔城市13677962298: MySQL Hash索引和B - Tree索引的区别 -
温钱复方: 导读 在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议.二者区别 备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法:...

塔城市13677962298: mysql中的索引怎样使用btree索引 -
温钱复方: B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引.不仅仅在 MySQL 中是如此,实际上在其他的很多数据库管理系统中B-Tree 索引也同样是作为最主要的索引类型...

塔城市13677962298: MySQL中myisam和innodb的主键索引有什么区别 -
温钱复方: nnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB...

塔城市13677962298: mysql innodb建立普通索引怎么写 -
温钱复方: 从 MySQL 5.7 开始,开发人员改变了 InnoDB 构建二级索引的方式,采用自下而上的方法,而不是早期版本中自上而下的方法了.在这篇文章中,我们将通过一个示例来说明如何构建 InnoDB 索引.最后,我将解释如何通过为 innodb_fill_factor ...

塔城市13677962298: mysql有哪些索引 -
温钱复方: 从数据结构角度1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理2、hash索引:a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询 b 其检索效率非常高,索引的检索可以一次定位...

塔城市13677962298: mysql对联合索引有优化么?会自动调整顺序么?哪个版本开始优化 -
温钱复方: 高效的数据库,mysql基本是首选.良好的安全连接,自带查询解析、sql语句优化,使用读写锁(细化到行)、事物隔离和多版本并发控制提高并发,完备的事务日志记录,强大的存储引擎提供高效查询(表记录可达百万级),如果是InnoDB,...

塔城市13677962298: MYSQL中InnoDB是什么? -
温钱复方: innodb的特色在于支持并发与表间引用 MySQL支持多种存储引擎,用户可以方便的选用不同的存储引擎来支持自己的应用,每种不同的存储引擎都有其自己的特性 Innodb是其中的一种存储引擎,它的特性是支持事务,并且采用多版本并发控制...

塔城市13677962298: 一个表只能有一个主键索引,一个主键索引可以多个字段 -
温钱复方: 面试的时候肯定会问这一个问题,mysql为什么会选择b+树作为索引呢?而不选择其他索引,例如b树?hash?下面说的磁盘IO是指数据从硬盘加载到内存中的操作 hash索引的话,不支持范围查询,因为hash就是一个键对应一个值的,没办法范...

塔城市13677962298: 为什么有关MongoDB采用B树索引,以及Mysql B+树做索引 -
温钱复方: 先从数据结构的角度来答. 题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. 这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据. 从Mysql(Inoodb)的角...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网