关于事物型数据库的索引原理

1.二分查找算法

  二分查找法的时间复杂度为Ο(log2n)。大家如果有兴趣可以去验证一下这个结果,这里我就不做解释了。

  我们具体来感受一下二分查找法有多强大,假设:集合里面有40亿个元素,排序方式为从左往右,依次递增,我们最多需要查找log2 4000000000  = 32次,就可以在40亿个元素里面找到我们需要的元素 。说点题外话:虽然二分查找法很强大,但这并不意味着二分查找法适用于任何场景,因为我们在为业务场景选择算法时,除了算法的时间复杂度,还要考虑空间复杂度,而且越复杂的程序越是容易发生异常。最主要的是二分查找法只能用于依次递增或依次递减的有序集合。

2.二叉查找树

  二叉查找树是采用二分查找法的思维把数据按规则组装成一个树形结构。所以平衡二叉树的深度为Ο(log2n),即从根节点到离它最远的叶子节点的距离为Ο(log2n),二叉查找树的数据结构如下图所示(注:本文所有图片来自其它文章):

  

总结平衡二叉树特点:
(1)非叶子节点最多拥有两个子节点;
(2)非叶子节值大于左边子节点、小于右边子节点;
(3)树的左右两边的层级数相差不会大于1;
(4)没有值相等重复的节点;

3.索引的数据结构——B+树

  数据库的索引结构采用的是B+树。B+树是一种二叉查找树,而二叉查找树又是根据二分查找法的思维组装的一种数据结构。所以,这就是为什么先要介绍二分查找法和二叉查找树的原因。之前我们已经知道了二分查找法的查找效率很高,为什么不用二叉查找树作为索引的数据结构呢?难道B+树的查找速度要比二叉查找树还要快吗?当然不是,我们先来了解一下B+树,

  从上图可知,一个磁盘块即为一个节点,并且数据只存放在叶子结点,非叶子节点存放的是磁盘块的地址,通过磁盘块的地址找到存放数据的磁盘块,这样大大的减少了磁盘的IO操作次数,所以就节省了大量的查找时间。因为程序是在内存里面运行,而数据是放在磁盘块里面的,寻找磁盘块的时间远远大于程序的运行时间,所以B+树的主要功能实际是减少磁盘的IO操作次数。

4.总结

  1.索引可以提高查询效率,但是因为索引的数据结构是一种二叉查找树,这就要求这棵树的结构必须是有规律的,所以,每次进行DML操作的时候,数据库都要重新去维护这棵树的结构,这就导致了DML操作时会产生大量的资源开销。所以,请根据实际业务场景来决定是否使用索引。

  2.事物型数据库的索引原理除了B+树数据结构,还有其它数据结构,但那些数据结构我就没了解过了。大家如果有兴趣可以了解一下。

  3.除了事物型数据库,还有一种分析型数据库,比如数据仓库,数据集市,这些就涉及到大数据的技术了。

  4.本来我以为我可以写好这篇文章,但最后才发现好多地方都解释得不清楚,请多多包涵!

原文地址:https://www.cnblogs.com/heyingquan/p/10712929.html

时间: 2024-10-07 07:16:03

关于事物型数据库的索引原理的相关文章

数据库05 /索引原理/创建用户和授权/数据库备份/慢查询优化/正确使用索引

目录 数据库05 /索引原理/创建用户和授权/数据库备份/慢查询优化/正确使用索引 1.什么是索引 2.索引的原理 3.索引的数据结构(聚集索引.辅助索引) 4.索引操作 5.索引的两大类型hash与btree 6.创建用户和授权 6.1对新用户的增删改 6.2对当前用户授权管理 7.MySQL数据库备份 8.锁和事务 9.慢查询优化的基本步骤 10.正确的使用索引 10.1 索引命中需注意的问题 10.2 其它注意事项 11.了解知识点 数据库05 /索引原理/创建用户和授权/数据库备份/慢查

数据库知识-索引原理

注明:本文作为学习资料,仅供参考! 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B树及其变种B+树. 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法.这种数据结构,就是索引. 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动). 上图展示了一种可能的索引方式.左边是数据表,一共有

MySQL数据库中索引原理与数据结构

MySQL中的索引分为3种: 1,主键索引:即用主键当唯一索引 2,常规索引:实现方式为B树和哈希表 3,全文索引:实现原理类似倒排索引,常用来查询字段中包含关键字 下面复习下B-TREE和hash-table 1 B-tree B树可以在O(lgn)的时间内实现许多动态集合操作,除了用在数据库索引上,也被用在磁盘查找上. B树是一种多路查找平衡多叉树,具有以下属性: 1,如果根节点不是叶节点,则其至少有两棵子树. 2.每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <

数据库的索引原理

说白了,索引问题就是一个查找问题. 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B树及其变种B+树.在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法.这种数据结构,就是索引. 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动). 上图展示了一种可能的索引方式.左边是数据表,一共有两

MySQL的索引原理(图解)

数据库的索引原理 0.什么是索引 ? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度,但是会降低写入速度. show index from table_name; 查看索引 create index 索引名字 on 表(字段); 创建辅助索引 drop index 索引名字 on 表(字段); 删除索引 1.索引类型 1.0.全文索引(FULLTEXT) MyS

深入浅出数据库索引原理

前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了.我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:"是不是数据库查询上出问题了, 给表加上索引吧",然后妹子来了一句:"现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的".当时我就楞了一下, 有种强行装逼被拆穿的感觉,在自己的专业领域居然被非专业的同学教

数据库索引原理-转

中小企业MIS系统的管理基本上由两大部份组成,一是前台的可视化操作,二是后台的数据库管理.网管对前台的管理和维护工作包括保障网络链路通畅.处理MIS终端的突发事件以及对操作员的管理.培训等,这是网管们日常做得最多.最辛苦的功课:然而MIS系统架构中同等重要的针对数据库的管理.维护和优化工作,现实中似乎并没有得到网管朋友的足够重视,看起来这都是程序员的事,事实上,一个网管如果能在MIS设计期间就数据表的规范化.表索引优化.容量设计.事务处理等诸多方面与程序员进行卓有成效的沟通和协作,那么日常的前台

(转)深入浅出数据库索引原理

背景:好长时间不找工作了,这些基础性的东西都忘光了,看来找工作是个学习的好方式. 前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了.我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”.当时我就楞了一下, 有种强行装

深入解析数据库索引原理

前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了.我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”.当时我就楞了一下, 有种强行装逼被拆穿的感觉,在自己的专业领域居然被非专业的同学教育, 面子上真有点挂不住. 其