`
jiangwenfeng762
  • 浏览: 288174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mysql索引结构

 
阅读更多

刚接触db,索引貌似还是一个高级货,那么多新名词,新概念让人很晕,其实索引真的很简单。我们知道IO操作是数据库访问很耗时的操作,应该尽量避免。索引就是在内存中(当然如果索引太大,也可能在硬盘固定的,连续的存储块中)建立一个真实数据的映射,通过索引,我们确定要找的数据范围,然后再通过尽量少的IO到硬盘上把目标数据抓回来。以下是可以作为索引的数据结构,其中mysql采用的是B+树。

顺序文件:几种简单的文件组织,其产生方式是将数据文件按某个查找键排序,并在该文 件上建立索引。 • 稠密索引:这种索引为数据文件的每个记录设一个键-指针对。这些键-指针对按它们的键 值顺序存放。 • 稀疏索引:这些索引为数据文件的每个存储块设一个键-指针对。与指针相对应的键为该 指针所指向的存储块中第一个键值。

• 多级索引:在索引文件上再建索引,在索引的索引上再建索引,等等,这在有时候是很有 用的。高级索引必须是稀疏的。

• 文件的扩展:随着数据文件和它的索引文件的增长,必须采取一些措施来为文件增加附加 的存储块。为文件的基本块增加溢出块是一种可行的办法。在数据文件或索引文件的块序 列表中插入更多的块,除非要求文件本身存放在连续的磁盘块中。

• 辅助索引:即使数据文件没有按查找键K排序,我们也可在键K上建立索引。这样,索引 必须是稠密的。

• 倒排索引:文件与其包含的词之间的关系通常可通过一个词-指针对的索引结构来表示。 指针指向“桶”文件的某个位置,该位置上有一个指向文件中词的出现的指针列表。

• B树:这些结构实质上是有着很好的扩充性能的多级索引。带有n个键和n+ 1个指针的存储 块被组织成一棵树。叶结点指向记录。任何时候所有索引块都在半满与全满之间。

• 范围查询:指查找键值在给定范围内的所有记录,有索引的顺序文件和B树索引可为这类 查询提供便利,但散列表索引不能。

• 散列表:同创建主存散列表一样,我们也可以基于辅存的存储块来建立散列表。散列函数 将键值映射到桶,有效地将数据文件的记录分配到多个小组(桶)。桶用一个存储块和可 能出现的溢出块表示。

• 动态索引:如果一个桶中的记录太多,势必降低散列表的性能,因而随着时间推移,桶的数 量可能需要增加。允许合理增加桶的两种重要方法是可扩展散列和线性散列。它们都首先将 键值散列到一个长位串,然后使用其中若干位来决定记录所属的桶,位的数目是可变的。

• 可扩展散列:这种方法允许在存在记录数太多的桶时将桶的数目加倍。它使用指向块的指 针数组来表示桶。为了避免块过多,几个桶可以用同一个块表示。

• 线性散列:这种方法每当桶中的记录比例超出阈值时增加一个桶。由于单个桶的记录不会 引起表的扩展,所以在某些情形下需要溢出块。

分享到:
评论

相关推荐

    由浅入深探究mysql索引结构原理、性能分析与优化

    由浅入深探究mysql索引结构原理、性能分析与优化

    MySQL Innodb 索引原理详解

    在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) 搜索二叉树是一种特殊的二叉树,每个节点至多有两个子...

    MySQL索引背后的数据结构及算法原理

    ### MySQL索引背后的数据结构及算法原理 #### 数据结构及算法基础 索引在数据库中的作用至关重要,它能够显著提高数据检索的速度。正如标题所提到的,“MySQL索引背后的数据结构及算法原理”这一主题是技术面试中...

    Mysql索引数据结构.pptx

    MySQL 索引数据结构是数据库管理系统中提升查询效率的关键技术。当我们在处理查询速度较慢的 SQL 语句时,通常会考虑引入索引来优化。索引是一种特殊的数据结构,它按照一定的排序规则存储了数据表中的部分或全部...

    MySQL 索引最佳实践

    本文将深入探讨MySQL索引的最佳实践,旨在为开发者和数据库管理员提供实用指南。 ### 理解索引的重要性 索引的存在主要是为了加速数据库中的数据访问速度。在没有索引的情况下,数据库必须遍历整个表来查找特定的...

    mysql存储与索引技术

    应根据应用需求选择合适的存储引擎,合理设计索引结构,同时关注索引带来的存储和性能影响,以实现数据库的最佳运行状态。在实践中,定期评估和调整索引策略,结合具体的业务场景进行优化,是保持数据库高效运行的...

    MySQL索引 聚集索引

    MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。

    mysql 索引与执行计划

    这种方式类似于数据库中的B+树索引结构,使得查询更加高效。 MySQL中的索引也有类似的设计,例如BTREE索引。每个节点包含了主键ID,当通过主键ID查询数据时,首先会查询索引库以快速定位到具体的数据记录。 ##### ...

    MySQL索引最佳实践

    - 定期审查和优化索引策略,根据实际查询模式调整索引结构。 通过以上内容的学习,我们可以了解到MySQL索引的重要性和不同类型的索引在实际应用中的优势与局限性。正确地理解和运用这些知识可以帮助我们更高效地...

    Mysql(索引结构/事务/锁/MVCC/BufferPool/优化)总结

    对Mysql(索引结构/事务/锁/MVCC/BufferPool/优化)总结,包括重要知识点与面试点,xmind源文件

    MySQL索引类型大汇总

    MySQL 索引类型大汇总 MySQL 索引类型是数据库性能优化的关键所在。索引可以大幅度提高查询速度,提高数据库的高效运行。在 MySQL 中,索引可以分为单列索引和组合索引两种。 1. 普通索引 普通索引是最基本的索引...

    MySQL索引的数据结构与算法.pptx

    ### MySQL索引的数据结构与算法 #### 一、MySQL存储引擎概述 MySQL提供了多种存储引擎以适应不同的应用场景。其中,最常用的包括InnoDB、MyISAM、MEMORY等。每种存储引擎都有其特点和适用场景。 - **InnoDB**:...

    mysql的索引优化

    - **索引结构**:MySQL索引通常是以B树形式存储的。B树具有良好的查询性能,即使在大型数据集中也能保持高效的查找能力。 - **索引的组成**:对于每个索引项,MySQL都会保存一个指向实际数据文件中记录位置的“指针...

    MySQL索引.pptx

    本文档主要针对对Mysql初级爱好者进行探讨学习,欢迎更多的热爱技术、喜欢技术愿意分享技术的朋友交流。

    MySQL索引背后的数据结构及算法原理-07071521.pdf

    当前大多数数据库系统及文件系统采用B-Tree或其变种B+Tree作为索引结构。B-Tree是一种多路平衡查找树,适用于读写相对平衡的场景。一个B-Tree节点由若干个key和指向子节点的指针组成,满足特定条件,例如节点中的key...

    mysql索引数据结构详解

    MySQL 索引数据结构详解 MySQL 索引是一种特殊的数据结构,它可以帮助快速定位和检索数据。索引的主要目的便是降低树的高度,从而提高查询效率。下面我们将详细介绍 MySQL 索引的数据结构和工作原理。 索引的存储 ...

Global site tag (gtag.js) - Google Analytics