MySQL索引和事务 事务隔离级别
创始人
2024-06-02 20:53:21
0

文章目录

  • MySQL索引
    • 添加索引
    • 删除索引
    • 查询索引
  • MySQL事务
    • 什么是事务?
    • mysql事务隔离级别


MySQL索引

当我们用数据库查询数据的时候,如果它只有很小的数据量时,可能查询不同数据的时候所消耗的时间并没有太大区别,但如果是一个有着几百万甚至几千万的数据库呢?此时你就会发现你查询一条数据的时间甚至要消耗十几秒,对于人来说可能这十几秒并不算什么,可是对于计算机来说这是坚决不被允许的,可是为什么会造成这样的情况呢?
当我们查询的使用的该字段没有索引的时候,它是会从第一条数据依次查询到最后一条,尽管它找到了唯一符合条件的数据的时候,它也会接着找到最后一条,会消耗大量的时间
在这里插入图片描述
当你给某列加索引的时候,该列就会形成二叉树,将中间值作为该二叉树根节点,此后找寻数据,只需要根据大小进行比较就可以快速锁定数据位置
在这里插入图片描述

添加索引

添加唯一索引
在这里插入图片描述
添加普通索引
在这里插入图片描述
在这里插入图片描述
添加主键索引
方法一:
在这里插入图片描述
方法二:
在这里插入图片描述
如何选择
如果某列的值,是不会重复的,则优先考虑使用unique索引,否则使用普通索引

删除索引

在这里插入图片描述
删除主键索引
在这里插入图片描述

查询索引

方式一:
在这里插入图片描述
方式二:
在这里插入图片描述
方式三:
在这里插入图片描述
哪些列上适合使用索引
1.较频繁的作为查询条件字段应该创建索引
2.唯一性太差的字段不适合单独创建索引,即使频繁的作为条件查询条件
3.更新非常频繁的字段不适合创建索引
4.不会出现在where子句中字段不该创建索引


MySQL事务

什么是事务?

事务用于保证数据的一致性,它由一组相关的dml(增 删 改)语句组成,该组的dml语句要么全部成功,要么全部失败回滚
将一个账号的钱转到另一个账户上
需求:
1.将转账账户减去100
2.将接收账户加上100
问题:第1条语句执行成功,但是第2条语句失败
在这里插入图片描述
提交事务(一旦提交之后不可以回退,会自动删除所有保存点,会确认事务的变化,结束事务、删除保存点、释放锁、数据生效,其它会话可以查看到事物变化后的新数据)其产生这种现象和隔离级别有关系
在这里插入图片描述
细节
1.如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚
2.如果开始了一个事务,你没有创建保存点,你可以执行 rollback,默认就是回退到你事务开始的状态
3.可以在事务中(还没有提交的时候),创建多个保存点
4.可以在事务没有提交前,选择回退到哪个保存点
5.InnoDB存储引擎支持事务,MyISAM不支持
6.开启一个事务 start transaction,set autocommit=off

mysql事务隔离级别

多个连接开启各自事务操作事务来操作数据库中的数据时,数据库系统来负责隔离操作,从而以保证各个连接在获取数据时的准确性
否则会出现脏读、幻读、不可重复读

脏读:当一个数据读取到另一个事务未提交的修改
就好比两个人操作同一个账户,一个人存钱,一个人查询,刚存进去100还没有提交,可是查询的人已经查到了这个数据,但发生异常之后,存钱发生回滚,导致读取脏数据

不可重复读:同一查询在同一事务中多从进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集
就好比你想知道你账户有多钱,当你读取之后,还没有提交,突然你妈妈存了400,并且提交了事务,再次读取后就没有读取到原来的结果了

幻读:同一次查询在事务中多次进行,由于其他提交事务所作的插入操作,每次返回不同放入结果集

在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...