美文网首页
数据库索引原理

数据库索引原理

作者: 自负的鱼 | 来源:发表于2018-09-13 21:26 被阅读16次

数据库索引原理

索引的目的在于提高查询效率,索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。
索引的原理在于使用空间换时间,索引会将建立的索引KEY存储在N叉树(BTree)。BTree适合在磁盘存储设备上组织动态查找表,这些数据结构以某种方式引用(指向)数据。

磁盘IO预读

计算机操作系统考虑到磁盘IO操作的高昂代价,当一次IO操作时,会把当前磁盘页和相邻的数据也读取到内存缓存区。

索引的结构数据

索引是使用B+树实现的数据结构。


image.png

每个磁盘块包含:数据项(蓝色)、指针(黄色);非叶子节点只不存储真实的数据,只存储指引搜索方向的数据项,真实的数据存储在叶子结点。P1指向小于17的磁盘块,P2指向17和35之间的磁盘块,P3表示大雨35的磁盘块。

二叉树

二叉查找树是一种查找效率非常高的数据结构,二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。它有三个特点。

  1. 每个节点最多只有两个子树。
  2. 左子树都为小于父节点的值,右子树都为大于父节点的值。
  3. 在n个节点中找到目标值,一般只需要log(n)次比较。

BTree树

这种数据结构,非常有利于减少读取硬盘的次数。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据。


image.png

B树的特点也有三个。

  1. 一个节点可以容纳多个值。比如上图中,最多的一个节点容纳了4个值。
  2. 除非数据已经填满,否则不会增加新的层。也就是说,B树追求"层"越少越好。
  3. 子节点中的值,与父节点中的值,有严格的大小对应关系。

相关文章

  • 索引

    数据库索引的实现原理

  • MySQL索引原理详解

    学习MySQL数据库索引原理知识,同时了解与性能相关的优化实践。 讲述关于索引的原理,为后面数据库优化提供合适的方...

  • 数据库索引

    数据库索引 数据库的索引原理都是一样,这里我举的例子的索引指的是mysql的@[toc] 概述: 大家都知道,索引...

  • MySQL 索引

    MySQL 索引 数据库索引的原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表...

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • 最新Java面试300题:腾讯T4面试+美团+京东+拼多多(文末

    数据库原理 MYISAM与innodb搜索引擎原理MyISAM引擎使用B+Tree作为索引结构,叶节点的data域...

  • Mysql数据库索引原理

    MySql数据库索引原理 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑...

  • 关于索引

    目录 1.索引的概念; 2.索引的分类; 3.索引的结构和原理; 4.索引的使用策略; 一.概念 在解释数据库索引...

  • 索引使用策略

    一、示例数据库本文选用MySQL官方文档中提供的示例数据库之一:employees。 二、命中索引原理高效使用索引...

  • MySql数据库面试常见问题

    1.数据库索引实现原理数据库的索引是在存储引擎层实现的,不同的存储引擎有不同的实现方法,索引一般指的是B-Tree...

网友评论

      本文标题:数据库索引原理

      本文链接:https://www.haomeiwen.com/subject/cbuggftx.html