`

B+树索引 概述

 
阅读更多

学习mysql技术内幕,简要总结部分内容


B+树索引


B+树索引的本质就是B+树在数据库中的实现。InnoDB存储引擎中,每个页的大小为16KB。因此在数据库中,B+TREE的高度一般都在2-4层,这意味着查找某一键值最多只需要2-4次IO操作,还OK。因为现在一般的磁盘每秒至少有100次IO,2-4的IO意味着查询时间只需0.02-0.04秒。
   在MYsql数据库中,索引是在存储引擎层实现的,不同引擎,可能B+TREE索引实现方式不同。
B+TREE索引可分聚集索引和辅助索引(非聚集索引),两者数据结构一样,都是B+TREE,区别在于所存放的数据内容。


InnoDB B+TREE索引


  InnoDB 存储引擎是索引组织表,也就是说数据文件本身就是按照B+TREE方式存放数据的。其中,B+TREE的键值为主键,若在建立时没有显式地指定主键,则Innodb存储引擎会自动创建一个6字节的列作为主键。因此在InnoDB存储引擎中,可以将B+TREE索引分为聚集索引和辅助索引。无论如何索引,每个页的大小都为16kb,且不能更改。
   聚集索引是根据主键创建的一棵B+TREE,聚集索引的叶子节点存放了表中的所有记录。辅助索引是根据索引键创建的一棵B+TREE,与聚集索引不同的是,其叶子节点仅存放索引键值,以及该索引键值指向的主键。也就是说,如果通过辅助索引查找数据,那么当找到辅助索引的叶子节点后,很有可能还需要根据主键值查找聚集索引来得到数据,这种查找方式又被称为书签查找。因为辅助索引不包含行记录的所有数据,这就意味着每页可以存放更多的键值,因此其高度一般小于聚集索引。若辅助索引是一个包含主键的联合索引,那么并不需要一个额外的列来存放主键值,辅助索引会选择通过联合索引 中的主键进行查找。


MyISAM B+TREE索引


MyISAM存储引擎其实更像一张堆表,所有的行数据都存放于MYD文件中,其B+TREE索引都是辅助索引,存放于MYI文件中。PRIMARY KEY索引和其他索引不同之处在于其必须是唯一的,并且不可为NULL值。其索引页的大小默认为1KB,同样不可调整。因为没有聚集索引,其索引叶子节点存放的键值不是主键值,而是MYD文件中的物理位置。

分享到:
评论

相关推荐

    B+树的c语言代码实现

    与B树相比,B+树的所有叶子节点都位于同一层,且叶子节点之间通过指针相互连接,这使得B+树非常适合范围查询和顺序访问。 #### 三、代码结构分析 1. **文件头注释**: - 作者:bysvking - 时间:2012年5月 - ...

    B+树讲义(英文)

    ### B+树概述 B+树是一种自平衡的树数据结构,常用于实现虚拟内存、文件系统和数据库索引。它是由Rudolf Bayer和Ed McCreight在1970年代初期提出的,旨在优化磁盘读写操作。B+树的设计重点在于减少查找、插入和删除...

    B-+树的实现细节

    2. **B-+树**:B-+树是一种特殊的B-树,它的所有数据都存储在叶子节点上,而非叶子节点只存储索引信息。这样设计的好处是可以减少磁盘I/O次数,并且便于进行范围查询。B-+树中,叶子节点之间通过指针相互连接,形成...

    b+/-树的实现源代码

    **B+树与B-树概述** B+树和B-树是计算机科学中用于数据库和文件系统等数据存储的重要数据结构,它们主要用于高效地管理大量数据,特别是当数据需要在磁盘等慢速存储介质上进行操作时。这两种树都是自平衡的,能保持...

    工程实践2--B+树.rar

    - **PPT**:PPT可能概述B+树的概念,展示其实现的关键部分,以及性能测试结果。 - **视频**:视频教程可能会演示B+树的动态构建过程,帮助观众直观理解其工作原理。 5. **应用场景**: - **数据库索引**:B+树常...

    B树、B-树、B+树、B树

    B+树是一种特殊的B树,广泛应用于数据库索引和文件系统中,因为它提供了更好的查询性能,特别是范围查询。 **特点:** - 所有数据都存储在叶子节点中,而非叶子节点仅包含键; - 叶子节点之间通过指针相连,方便...

    深入研究B树索引

    #### B树索引概述 B树索引是一种高效的数据结构,广泛应用于数据库管理系统中,以提高数据检索的速度并确保数据的唯一性。B树索引的设计目的是为了最小化查找时间,尤其是在大规模数据集上。这种索引结构在磁盘存储...

    B+,B树窗口图形程序

    B+树和B树是两种常见的自平衡查找树(Balanced Search Tree)数据结构,常用于数据库和文件系统的索引存储。它们的设计目标是优化磁盘I/O操作,因为磁盘读写速度远慢于内存。在大数据量存储时,这种数据结构能有效...

    【转】深入研究B树索引

    **深入研究B树索引** B树(B-tree)是一种自平衡的树数据结构,广泛应用于数据库和文件系统中,特别是在实现索引存储时。它能够保持数据有序,允许快速查找、插入和删除操作。本篇文章将深入探讨B树的核心概念、...

    B-TREE索引概念.pdf

    标题与描述概述的知识点主要集中在Oracle数据库优化中的B树索引概念,这涉及到数据库管理、数据结构以及查询优化的关键方面。下面将详细阐述这些概念及其在Oracle环境中的应用。 ### B树及其变种 #### B树的引入 B...

    B.rar_B树_B树 java_b 树 索引_树 搜索

    **B树概述** B树(Balanced Tree),全称为自平衡二叉查找树,是一种能够保持数据平衡的多路搜索树。它最初由Rudolf Bayer在1972年提出,主要应用于数据库和文件系统等领域,以解决大规模数据存储时的效率问题。B树...

    B树算法在数据库中的应用

    #### B树与B+树概述 B树是一种自平衡的树数据结构,常用于数据库和其他磁盘存储系统中。它具有高效的查找、插入和删除性能,尤其适用于大型数据库系统。B树的一个变体称为B+树,两者在结构上存在一定的差异,但在...

    多维空间对象BR树索引机制研究

    ### 多维空间对象BR树索引机制研究 #### 引言 在现代数据库系统中,尤其是处理地理信息系统(GIS)或图像识别等涉及多维数据的应用场景时,高效的索引机制至关重要。传统的R树虽然在空间数据索引方面表现突出,但...

    一个用C++实现的B+tree程序源代码.zip

    B+树概述: 1. **层级结构**:B+树是一种自平衡的多路搜索树,具有分层的节点结构,每个节点可以拥有多个子节点,通常比二叉树有更高的分支因子。 2. **叶子节点**:B+树的所有叶子节点都通过指针相互连接,确保了...

    mysql索引和锁机制ppt介绍

    - **B*树:** 是B树的一种变种,具有额外的横向指针,可以更好地保持树的平衡性。 **B+树的分裂:** 当向B+树中插入新数据导致节点过满时,会触发节点分裂,以保持树的平衡。例如,向已满的节点中插入新记录时,会...

    数据库管理系统概述英文版课件:10 B+tree.ppt

    【数据库管理系统概述】\n\n在数据库管理中,B+树(B+ Tree)是一种广泛应用于索引结构的数据结构,尤其在大型数据库系统中扮演着关键角色。B+树是为了解决范围查询和高效数据访问而设计的一种平衡多路搜索树。\n\n*...

    高效B树算法原理与代码实现

    ### B树代码实现概述 根据提供的部分代码,我们可以看到一个典型的B树结构定义和相关的函数声明。以下是对这些代码的简要分析: 1. **数据结构定义**: ```c typedef struct btnode { int d; // 节点中的键的...

    数据库系列课(索引)

    - **节点宽度限制**:为了保持树的平衡性,B树允许每个节点存储多个键值对,并限制了每个节点的最大宽度。 - **多路查找树**:每个节点可以有多个子节点,这使得B树能够在一次I/O操作中检索更多数据。 - **平衡性**...

Global site tag (gtag.js) - Google Analytics