MySQL数据库索引和事务的作用是什么

技术MySQL数据库索引和事务的作用是什么本篇内容主要讲解“MySQL数据库索引和事务的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库索引和事务的作

本文主要解释“MySQL数据库索引和事务的功能是什么?”感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学习一下“MySQL数据库索引和事务的功能是什么”!

1. 索引

10-1010索引是一种分散的存储结构,创建它是为了加快表中数据行的检索。索引是为表构建的,表由索引页而不是数据页组成。每个索引页中的行都包含逻辑指针,以加快物理数据的检索。

在数据库图表中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。保存索引所附加到的表或表所在的图表时,索引将保存在数据库中。

一般来说,数据库中索引与表、数据的关系类似于书架上的书(表)、书的内容(数据)、书的目录(索引)。

1.1 概念

在数据库系统中建立索引主要有以下作用:

快速数据检索

确保数据记录的唯一性。

实现表之间的引用完整性。

使用order by子句和group by子句进行数据检索时,使用索引可以减少排序和分组的时间。

1.2 作用

1.3 索引的原理

指数的目的是方便查询。

MySQL的查询主要是选择,选择的基本过程包括遍历表,依次取数每条记录,根据where语句的条件进行过滤。

因为MySQL把数据存储在硬盘上,每次取出记录,查询时都要访问硬盘。

但是IO设备对硬盘的访问效率远低于对内存的访问效率,因此减少磁盘的访问次数可以提高查询效率,这是构建索引的核心思想。

1.3.1 减少磁盘的访问次数是构建索引的核心思想

:减少数据访问次数是索引的一个重要思想。接下来,将分析几种数据结构,以找到更适合索引的数据结构。

二叉搜索树:

因为二叉查找树可能是一棵树,所以时间复杂度是O(N)

AVL 树:

AVL树本质上是一种二元平衡搜索树,是二叉查找树的改进。它将保证左右子树的高度差小于1,即不会有单一的树结构,搜索时间复杂度为O(logN)。

因为左右子树的高度差不应该超过1,插入或删除都会破坏AVL树的结构。因此,需要随时调整树。在满足查询效率的同时,降低了插入和删除操作的效率,插入和删除的时间复杂度为O(logN)。

红黑树:

红树林的本质是一棵规则宽松的AVL树,即不要强制左右子树的高度差小于1,这样会降低要求,从而保证插入和删除操作的效率。

而查询插入和删除的时间复杂度为O(logN)。

哈希表:

哈希表可以查询、插入和删除,时间复杂度为O(1)

但是哈希表的一个关键点是必须相等,但是不能达到大于或小于等条件,与实际查询不一致。

到目前为止,似乎只有AVL树或者红黑树更适合MySQL索引的实现,而这两种数据结构的搜索效率直接由树的高度决定,所以树的高度也会随着数据的增加而增加。

为了进一步优化,可以使用N元搜索树来降低树的高度,即减少磁盘IO来提高搜索效率。

B 树:

b树是一种N元搜索树。

B 树示例结构:

MySQL数据库索引和事务的作用是什么

在索引中,每个节点代表一条记录。

B 树的特点:

每个节点可以包含n个子树。

它可以存储在每个节点上。

在多个值

  • 左子树的值都小于根节点的对应值,右子树的值都大于根节点的对应值

  • B+ 树:

    B+ 树是一种特殊的 N 叉搜索树,是 B 树的改进版

    B+ 树示例结构:

    MySQL数据库索引和事务的作用是什么

     B+ 树相对于 B 树的改进:

    • 叶子节点存储每行记录,非叶子节点只要存储每行的索引值即可

    • 非叶子节点的值存在重复,使得叶子结点这一层是完整的数据集合

    • 可以通过类似于链表的方式,把所有的叶子节点连接起来

    B+ 树的优势:

    • 善于进行范围查找

    • 由于所有的查询都是落在叶子结点上,故查询的速度是比较稳定的

    • 由于叶子结点是数据的全集,因此就可以把叶子结点存到硬盘上,非叶子结点直接存到内存中,大大降低了读取硬盘的次数

    1.4 适用场景

    • 查找的次数比较多,插入删除的次数较少适合用索引

    • 由于索引本身也占据一定空间,如果磁盘紧张就不太适合用索引

    • 索引是指定某个列来建立的,当某列的区分度比较大的时候,适合用索引,例如自增主键

    1.5 使用语句

    补充:

    创建主键约束(primary key)、唯一约束(unique)、外键约束(foreign key)时,会自动创建对应列的索引

    1.5.1 查看索引

    语法:

    show index from 表名;

    示例:

    MySQL数据库索引和事务的作用是什么

    1.5.2 创建索引

    语法:

    create index 索引名 on 表名(字段名);

    示例:

    MySQL数据库索引和事务的作用是什么

    1.5.3 删除索引

    语法:

    drop index 索引名 on 表名;

    示例:

    MySQL数据库索引和事务的作用是什么

    注意:

    主索引不能删除,删除会报错

    2. 事务

    2.1 概念

    事物:是属于计算机中一个很广泛的概念,一般是指要做的或所做的事情。在关系数据库中,一个事务可以是一条 SQL 语句或者一组 SQL 语句或整个程序。

    通俗的讲,比如银行转账的操作,A 转给 B 500元,那么这个操作其实包含了 A 账户余额减少500元和 B 账户余额增加500元两个操作。

    事物就相当于将这一连串的动作给打包,使其成为一个整体,要么全都不做,要么全都做完

    2.2 为什么使用事务

    用上述银行转账的例子为例,假设 A 账户减少500元的操作成功了,但 B 账户增加500元的账户没有成功,那么这个转账的操作是失败的。

    事物的核心特点就是: 把一系列操作给打包到一起,构成一个整体,要么全都做完,要么一个都不做。

    全都不做是指: 如果某个操作失败了,那么就会将此时的中间状态偷偷还原回去

    因此使用事物的话就可以保证,某一系列的操作,不会只完成其中一部分,它要么完全完成,要么都没有完成

    2.3 四大属性

    事务是恢复和并发控制的基本单位,它具有四个属性:原子性、一致性、持久性、隔离性

    事物的核心是原子性

    2.3.1 原子性

    概念:

    一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。

    事物的核心是原子性,原子性的核心是回退为中间状态,回退为中间状态核心就是回滚,回滚的核心就是记住每步的操作

    2.3.2 一致性

    概念:

    事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    执行事物之前和执行事物完成后,当前表里的数据都是合理的状态

    2.3.3 持久性

    概念:

    持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    事物操作的数据都是直接操作硬盘,而硬盘的数据都是持久化的

    2.3.4 隔离性

    概念:

    一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    2.4 使用方法

    开启事物:

    start transaction;

    执行多条 SQL 语句

    回滚或提交

    -- 回滚:表示上述 SQL 语句全部失败
    rollback;
    -- 提交:表示上述 SQL 语句全部成功
    commit;

    到此,相信大家对“MySQL数据库索引和事务的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/137930.html

    (0)

    相关推荐

    • Dojo Build有什么用

      技术Dojo Build有什么用小编给大家分享一下Dojo Build有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Dojo 提供了一

      攻略 2021年10月19日
    • 如何分析OpenLayers3加载矢量地图源的问题

      技术如何解析OpenLayers 3加载矢量地图源的问题今天就跟大家聊聊有关如何解析OpenLayers 3加载矢量地图源的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可

      攻略 2021年12月23日
    • VB6实现MUI程序方法是怎么样的

      技术VB6实现MUI程序方法是怎么样的这期内容当中小编将会给大家带来有关VB6实现MUI程序方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。为大家详细讲述的是VB6实现MU

      攻略 2021年10月28日
    • vue中的生命周期和钩子函数是什么

      技术vue中的生命周期和钩子函数是什么这篇文章主要讲解了“vue中的生命周期和钩子函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中的生命周期和钩子函数是什

      攻略 2021年12月4日
    • 如何解析CSRF漏洞

      技术如何解析CSRF漏洞这篇文章给大家介绍如何解析CSRF漏洞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。CSRF:跨站请求伪造,伪装成用户身份来执行一些非用户自愿的恶意以及非法操作CSRF和XS

      攻略 2021年12月9日
    • CF1148H Holy Diver

      技术CF1148H Holy Diver CF1148H Holy Diver一、题目
      点此看题
      二、解法
      输入特性要求的做法就应该是移动右端点 \(r\) 然后维护一些东西。
      首先考虑怎么维护 \([

      礼包 2021年10月28日