广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库索引和事务的作用是什么
  • 418
分享到

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

2023-06-22 00:06:48 418人浏览 独家记忆
摘要

本篇内容主要讲解“MySQL数据库索引和事务的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql数据库索引和事务的作用是什么”吧!1. 索引1.1 概念索引是为了加速对表中数据行

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

1. 索引

1.1 概念

  • 索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

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

通俗的讲,索引与数据库中的表和数据的关系就类似于书架上的图书(表)、书籍内容(数据)和书籍目录(索引)的关系

1.2 作用

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

  • 快速取数据

  • 保证数据记录的唯一性

  • 实现表与表之间的参照完整性

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

1.3 索引的原理

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

索引的目的是方便进行查询。
mysql 的查询主要是 selectselect 基本执行的过程包括遍历表、依次取出每个记录、根据 where 字句的条件进行筛选
由于 Mysql 是把数据储存在硬盘上,因此进行查询时,每次取出记录都意味着要访问硬盘
io 设备对硬盘的访问效率远低于对内存的访问,因此减少磁盘的访问次数就可以提高查询的效率,也就是构建索引的核心思路

1.3.2 B+ 树适用实现索引的底层

减少对数据的访问次数就是实现索引时的重要思想,接下来将会对几种数据结构进行分析,以找到更适合的实现索引的数据结构

二叉搜索树:

由于二叉搜索树可能是一个单支树,时间复杂度为 O(N)

AVL 树:

  • AVL 树本质是一个二叉平衡搜索树,是对二叉搜索树的一个改进,它会保证了左右子树的高度差不超过1,即不会存在单支树的结构,查找时间复杂度为 O(logN)

  • 因为需要满足左右子树高度差不超过1的条件,所以插入或者删除操作会破坏 AVL 树的结构。因此需要随时对树进行调整。虽然查询效率得到了满足,但是降低了插入和删除操作的效率,插入删除时间复杂度为 O(logN)

红黑树:

  • 红黑树本质是一个放松了规则的 AVL 树,即不要强制左右子树高度差不超过1,会降低要求,以此来保证插入和删除操作的效率。

  • 整体和 AVL 树差异不大,查询插入删除的时间复杂度为 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数据库索引和事务的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库索引和事务的作用是什么

本文链接: https://www.lsjlt.com/news/301434.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库索引和事务的作用是什么
    本篇内容主要讲解“MySQL数据库索引和事务的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库索引和事务的作用是什么”吧!1. 索引1.1 概念索引是为了加速对表中数据行...
    99+
    2023-06-22
  • MySQL数据库索引和事务
    目录1. 索引 1.1 概念 1.2 作用 1.3 索引的原理 1.3.1 减少磁盘的访问次数是构建索引的核心思想 1.3.2 B+ 树适用实现索引的底层 1.4 适用场景 1.5 ...
    99+
    2022-11-12
  • MySQL数据库的索引和事务
    一、前言本文将要详细介绍MySQL索引与事务的概念及原理,并初步了解MySQL数据库视图概念,简述数据库的存储过程。二、索引2.1索引的概念——什么是索引一般来说,一篇论文,或者说一本书,都有其目录,而目录...
    99+
    2022-10-18
  • MySQL数据库之索引的作用是什么
    MySQL数据库的索引是用于提高查询效率的一种数据结构。它可以帮助数据库系统快速定位和访问数据,减少数据的扫描量,从而提高查询的速度...
    99+
    2023-08-15
    MySQL数据库
  • MySQL数据库的事务和索引详解
    目录一、事务:事务四大特性:并发事务带来哪些问题?(隔离所导致的一些问题)事务隔离级别有哪些?MySQL的默认隔离级别:二、索引:索引的作用:索引的分类:索引准则:索引的数据结构:总...
    99+
    2022-11-12
  • 数据库索引的作用是什么
    本篇文章为大家展示了数据库索引的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根...
    99+
    2022-10-18
  • MySQL索引的作用是什么
    小编给大家分享一下MySQL索引的作用是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!首先建立一张数据库表:create table single_table(id int no...
    99+
    2023-06-29
  • MySQL数据库中索引有什么用
    这篇文章将为大家详细讲解有关MySQL数据库中索引有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、MySQL索引简介索引是MySQL数据库为了加快数据查询的速度,给表中的某一个或者是某几个列添加...
    99+
    2023-06-22
  • 如何在Mysql数据库中使用视图、事务和索引
    今天就跟大家聊聊有关如何在Mysql数据库中使用视图、事务和索引,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。视图是对若干张基本表的引用,一张虚表,...
    99+
    2022-10-18
  • B+树在数据库索引中的作用是什么
    本篇文章给大家分享的是有关B+树在数据库索引中的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、B-树和B+树回顾1.B-树B-tree(多路搜索树)是一种常见的数...
    99+
    2023-06-19
  • MySQL数据库索引的设计原则是什么
    本篇内容主要讲解“MySQL数据库索引的设计原则是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库索引的设计原则是什么”吧!为了使索引的使用效...
    99+
    2022-10-18
  • MySQL数据库索引order by排序是什么
    这篇文章主要讲解了“MySQL数据库索引order by排序是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库索引order by排序是什么”吧!排序这...
    99+
    2023-06-21
  • MySQL数据库的索引有什么特点
    本篇内容主要讲解“MySQL数据库的索引有什么特点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的索引有什么特点”吧!索引是加速表内容访问的主要...
    99+
    2022-10-18
  • mysql数据库中索引的底层原理是什么
    本篇文章为大家展示了mysql数据库中索引的底层原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我...
    99+
    2022-10-18
  • 什么是mysql索引的数据结构
    本篇文章给大家主要讲的是关于什么是mysql索引的数据结构的内容,感兴趣的话就一起来看看这篇文章吧,相信看完什么是mysql索引的数据结构对大家多少有点参考价值吧。一、简介mysql索引的数据结构是树,常用...
    99+
    2022-10-18
  • mysql数据库的事务指的是什么
    本篇文章为大家展示了mysql数据库的事务指的是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是事务?数据库事务(Transaction)是访问并可能操...
    99+
    2022-10-18
  • MySQL唯一索引的作用是什么
    MySQL的唯一索引(Unique Index)用于确保表中的某列或某几列的值是唯一的。它可以防止重复的数据插入到表中,并且可以提高...
    99+
    2023-10-27
    MySQL
  • mysql中BTree索引的作用是什么
    本篇文章给大家分享的是有关mysql中BTree索引的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、概念BTree又叫多路平衡查找树。所有结点存储一个关键字。非叶...
    99+
    2023-06-15
  • MySQL数据库中存储引擎的作用是什么
    这篇文章将为大家详细讲解有关MySQL数据库中存储引擎的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  MySQL数据库各种存储引擎作用有哪些 ...
    99+
    2022-10-18
  • MySQL数据库索引的最左匹配原则是什么
    这篇文章主要为大家展示了“MySQL数据库索引的最左匹配原则是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL数据库索引的最左匹配原则是什么”这篇文章吧。一. 联合索引说明建立三个字...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作