代码编织梦想

事务是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性

1.事务四大特性ACID

  • 原子性——Atomicity:事务是最小单位不可分割
  • 一致性——Consistency :同一事务的SQL语句必须同时成功或失败
  • 隔离性——Isolation:不同事务之间具有隔离性
  • 持久性——Durability :事务一旦结束Commit,不可返回Rollback

2.事务隔离性

  • 读未提交——READ UNCOMMITTED:可以读取其他事务未提交的数据
  • 读已提交——READ COMMITTED:只能读取其他事务提交的数据
  • 可重复读——REPEATABLE READ:MySql的默认事务隔离,确保同一事务多次查询的结果一致
  • 序列化——SERIALIZABLE:所有事务按顺序执行,一个结束后再开始下一个

3.脏读/不可重复读/幻读

  • 脏读:发生在读未提交的隔离级别中,事务A读取到事务B未提交的数据
  • 不可重复读:发生在读未提交、读已提交的隔离级别中,因事务A能读取到事务B提交的数据,事务A发现两次查询结果不一致(某条数据已被事务B提交了修改操作)
  • 幻读:发生在读未提交、读已提交、可重复读的隔离场景中,虽然可重复读可以保证同一事务多次查询结果一致,但是其他事务B已经向表中插入了新的数据,但是事务A却没有发现(幻读),如果此时事务A也插入一条数据,也许会失败(插入ID已被事务B插入的数据占用了)。
读未提交读已提交可重复读序列化
脏读
不可重复读
幻读

4. MySql事务语法

事务基础常用命令

# 查看 MySQL 版本
select version();
# 开启事务
start transaction;
# 提交事务
commit;
# 回滚事务
rollback;

查看当前事物级别

-- MySQL 8.x, GLOBAL 表示系统级别,不加表示会话级别。
SELECT @@GLOBAL.TRANSACTION_ISOLATION;
SELECT @@TRANSACTION_ISOLATION;
+--------------------------------+
| @@GLOBAL.TRANSACTION_ISOLATION |
+--------------------------------+
| REPEATABLE-READ                | -- MySQL的默认隔离级别,可以重复读。
+--------------------------------+
-- MySQL 5.x
SELECT @@GLOBAL.TX_ISOLATION;
SELECT @@TX_ISOLATION;
+-----------------+
| @@TX_ISOLATION  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)

修改事物的隔离级别

-- 设置系统隔离级别,LEVEL 后面表示要设置的隔离级别 (READ UNCOMMITTED)。
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

查询事务的自动提交状态

SELECT @@AUTOCOMMIT;
+--------------+
| @@AUTOCOMMIT |
+--------------+
|            1 |
+--------------+

关闭事物的自动提交状态

SET AUTOCOMMIT = 0

在这里插入图片描述
关闭事务自动提交之后,此时在执行的增删改的SQL语句,如果不commit,则不会实际更改,此时可以执行rollback返回当初。

参考:https://www.jb51.net/article/247259.htm#_label2、https://www.bilibili.com/video/BV1Vt411z7wy

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AwesomeP/article/details/129670170

数据库事务隔离级别(脏读、幻读、不可重复读)-爱代码爱编程

一、数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。 √: 可能出现    ×: 不会出现 脏读不可重复读幻读Read u

数据库事务隔离级别及脏读、不可重复读、幻读的理解_一缕丶清风的博客-爱代码爱编程_在下列隔离级别中,允许可重复读并且可以避免脏读,不可重复读的是

  开篇声明,由于两位大佬排版不够美观,然后又发现一些歧义,因此我集大佬之所长,精心整理并加以完善,可放心阅读。 http://blog.csdn.net/yuxin6866/article/details/5264904

事务的四种隔离级别与脏读、幻读、不可重复读-爱代码爱编程

文章目录 一、事务隔离级别二、并发事务异常(一)脏读(二)不可重复读(三)幻读(四)丢失更新(五)脏写三、事务隔离级别(一)读未提交(Read Uncommitted)(二)读已提交(Read Committed)(三)可重复读(Repeatable Read)(四)串行化(Serializable)四、Spring事务隔离级别 一、事务隔离级

数据库事务隔离级别 与 脏读、不可重复读、幻读-爱代码爱编程

事务的四大特征 原子性   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。一致性   一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。隔离性   隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发

MySQL事务隔离级别以及脏读、幻读、不可重复读示例-爱代码爱编程

事务的隔离性 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理多个事务。当数据库上有多个事务同时执行的时候,就可能出现脏读

mysql脏读和幻读区别_数据库的脏读、不可重复读和幻读区别-爱代码爱编程

众所周知MySQL从5.5.8开始,Innodb就是默认的存储引擎,Innodb最大的特点是:支持事务、支持行级锁。 既然支持事务,那么就会有处理并发事务带来的问题:更新丢失、脏读、不可重复读、幻读;相应的为了解决这四个问题, 就产生了事务隔离级别:未提交读(Read uncommitted),已提交读(Read committed),可重复读(Rep

MySQL事务的隔离级别以及脏读、幻读和不可重复读-爱代码爱编程

1 事务的四大特性ACID ACID,是指数据库管理系统(DBMS)在写入或更新的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 Atomicity(原子性):一个事务中的所有操作,要么全部完成

mysql中模拟实现脏读,不可重复读和幻读及其解决方案-爱代码爱编程

要想在mysql命令行中实现脏读,不可重复读和幻读的问题,必须弄明白 autocommit和start transaction以及begin/commit之间的区别,这样实现起来更快,在本次实验中,推荐使用的是begin/commit模式,可以参考本人的另一篇博客 至于数据库的隔离级别以及事务的特性,这些都是基础知识,网上有一大堆资料, 1 脏读 1

MySQL事务、隔离级别、脏读幻读不可重复读-爱代码爱编程

MySQL事务、隔离级别、脏读幻读不可重复读 事务事务的ACID特性mysql的4种事务隔离级别什么是脏读什么是不可重复读什么是幻读 事务 数据库事务是指对数据库执行一批操作。这些操作要么全部执行成功,要么全部执行失败。 在MySQL中,InnoDB引擎支持事务,而MyIsam引擎则不支持。 事务的ACID特性 A–原子性:事务中的所有

Mysql的事务、隔离级别、脏读、幻读以及数据落盘步骤-爱代码爱编程

一、Mysql事务概念  二、事务的四大特性ACID 三、事务的隔离级别实战分析(mysql8.0版本)  四、Mysql脏读幻读不可重复读 五、Mysql从数据执行到落盘步骤分析  六、Mysql RedoLog与UndoLog日志 导读:本博文先讲解了mysql事务的概念,然后实际操作语句验证了事务的隔离级别,以及幻读、不可重复读等情况加深

mysql数据库的事务 acid 隔离级别 脏读 脏写 幻读 不可重复读-爱代码爱编程

事务的四大特征 原子性(atomicity):要么全部提交(commit),要么全部回滚(rollback) 一致性(consistency):数据从一个合法状态转换成另一种合法状态 隔离性(isolation):一个事务的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰 持久性(durability):一个事务的提交对数据库的改变是永久

Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读-爱代码爱编程

Mysql的事务隔离级别 Mysql有四种事务隔离级别,这四种隔离级别代表当存在多个事务并发冲突时,可能出现的脏读、不可重复读、幻读的问题。 脏读 大家看一下,我们有两个事务,一个是 Transaction A,一个是 Transaction B,在第一个事务里面,它首先通过一个 where id=1 的条件查询一条数据,返回 name=Ad

一篇文章读懂 mysql 事务中的四种隔离级别,以及脏读、不可重复读、幻读详解_天怎么不会塌的博客-爱代码爱编程

目录 一. 介绍1.1 MySQL 事务的四种隔离级别1.2 含义二. SQL 演示2.1 查看隔离级别2.2 修改隔离级别2.3 脏读、不可重复读、幻读2.4 READ UNCOMMITTED ----- 未提交读2.4.1 脏读2.4.2 不可重复读2.4.3 幻读2.5 READ COMMITTED ----- 提交读2.6 REPEATAB

mysql事务的隔离级别——关于脏读、幻读、可重复读_哇~是小菜呀的博客-爱代码爱编程

目录 一、事务(一)什么是事务(二)事务的特征(三)手动开启、提交、回滚事务 二、脏读、幻读、可重复读(一)脏读 read uncommit(二)不可重复读 unrepeatable(三)幻读(四)不可重复读和幻

mysql锁与脏读、不可重复读、幻读详解_wespten的博客-爱代码爱编程

最近,在一次 mysql 死锁的生产事故中,我发现,关于 mysql 的锁、事务等等,我所知道的东西太碎了,所以,我试着用几个例子将它们串起来。 具体做法就是通过不断地问问题、回答问题,再加上“适当”的比喻,来逐步构建脑子里的“知识树”。 需要提醒一下,这篇博客并不适合小白,因为你需要先了解排它锁、共享锁、事务,最重要的是你需要知道事务中的锁是什么时候