事务,一个或一组sql语句组成的执行单元,是最小的执行单元,要么全执行,要么全不执行。如果单元中某条sql语句执行失败,整个单元将会回滚,所有受影响的数据返回到事务开始前的状态。

事务具有ACID四个属性

A atomicity 原子性 ,原子性是指一个事务是不可再分割的单位,事务中的操作要么都发生,要么都不发生。

C consistency 一致性 事务必须使数据从一个一致性状态,切换到另外一个一致性状态。比方在一个转账过程中发生的金钱转换,转账前后,钱的总额是不变的,转账前A有x元,B有y元,转账完成之后A有z元,B有w元,则 x + y 是等于 z+ w的。

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

D durability 持久性 一个事务一旦提交之后,对数据库中数据的改变是永久性的,接下来其他操作和数据库故障不应该对其有任何影响。

mysql中,insertupdatedelete 语句都是隐式事务,想要手动设置一个事务,则需要将autocommit 设置为 0,等整个事务语句都执行完毕之后,再写 commit 提交 或rollback回滚。

比方可以这么写一个事务:

  1. set autocommit = 0;
  2. [start transaction;]
  3. 要执行的sql语句;
  4. [savepoint 回滚点名字]
  5. ...#一般就是增删改查语句
  6. ...
  7. commit | rollback [ to 回滚点名字]; # 设置回滚点前的语句都会被提交

当不同事务访问相同数据时,会发生一下几个问题,脏读,幻读,不可重复读

脏读 是指一个事务读取了另一个事务已经更改之后的数据,但是过了一会儿该事务又将事务回滚的情况。

不可重复读 是指一个事务读取的一个数据前后不一致的情况。多次重复读取数据的结果不一致。

幻读 一个事务读取数据的过程中有另一个事务执行了插入语句,导致当前事务读取数据前后数量不一致。比方一条更新全表的语句,开始执行前有n行数据,如果执行过程中,有另一事务插入了若干行数据,则执行完毕更新语句之后,受影响的行数前后会不一致。

mysql可以通过设置隔离级别可以避免以上几种现象

mysql的默认事务隔离级别为repeatable read,此种级别可以避免脏读和不可重复读的产生。次外还有以下几种

隔离级别/会出现的问题 脏读 不可重复读 幻读
read uncommitted
read committed ×
repeatable read × ×
serializable × × ×

查看当前的隔离级别:select @@tx_isolatioin;
设置当前连接的隔离级别: set transaction isolation level 隔离级别名字

事务及mysql中的隔离级别的更多相关文章

  1. [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. 数据库事务中的隔离级别和锁+spring Transactional注解

    数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...

  3. [转]数据库事务中的隔离级别和锁+spring Transactional注解

    数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...

  4. 一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1 .mysql索引结构,各自的优劣 2 .索引的设计原则 3 .mysql锁的类型有哪些 4 .mysql执行计划怎么看 ...

  5. spring 中常用的两种事务配置方式以及事务的传播性、隔离级别

    一.注解式事务 1.注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo. 2.事务配置实例 (1).spring+mybatis 事务配置 &l ...

  6. 浅析MySQL InnoDB的隔离级别

    MySQL InnoDB存储引擎中事务的隔离级别有哪些?对应隔离级别的实现机制是什么? 本文就将对上面这两个问题进行解答,分析事务的隔离级别以及相关锁机制. 隔离性简介 隔离性主要是指数据库系统提供一 ...

  7. Innodb 中 RR 隔离级别能否防止幻读?

    问题引出 我之前的一篇博客 数据库并发不一致分析 有提到过事务隔离级别以及相应加锁方式.能够解决的并发问题. 标准情况下,在 RR(Repeatable Read) 隔离级别下能解决不可重复读(当行修 ...

  8. 数据库的特性与隔离级别和spring事务的传播机制和隔离级别

    首先数据库的特性就是 ACID: Atomicity 原子性:所有事务是一个整体,要么全部成功,要么失败 Consistency 一致性:在事务开始和结束前,要保持一致性状态 Isolation 隔离 ...

  9. springboot事务的传播行为和隔离级别

    springboot事务的传播行为和隔离级别 在springboot中事务的传播行为和隔离级别都是在TransactionDefinition这个接口中定义的 传播行为定义了7种,分别用0-6来表示 ...

  10. MySQL - 数据库的隔离级别

    MySQL - 数据库的隔离级别 隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitte ...

随机推荐

  1. (default-compile) on project app: Fatal error compiling: 无效的标记: --release -> [Help 1]

    <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <versio ...

  2. Qt开发经验小技巧236-240

    关于在头文件中定义函数使用static关键字的血的教训. 有时候我们需要将一些常用函数写在一个文件中供很多地方调用,如果写的是 int doxxx{} 这种,在你多个地方引用的时候,肯定会编译报错提示 ...

  3. milvus操作

    java 引入依赖 <dependency> <groupId>io.milvus</groupId> <artifactId>milvus-sdk-j ...

  4. DEAT NOTE

    动漫 评分/10 评价 进击的巨人 10 献出心脏! Re:从零开始的异世界生活 10 蕾姆蕾姆!!! 反叛的鲁鲁修 10 算无遗策鲁鲁修 末日时在做什么?... 9 谁还不是个珂学家 东京食尸鬼 9 ...

  5. IDEA神器插件-40款

    IDEA 插件安装 步骤 IDEA里面,选择打开 File --> Settings --> Plugins 在Plugins里面, 可以搜索需要的插件 (下面的标题),然后安装 如下图: ...

  6. 深入理解ReentrantLock的实现原理

    文章目录ReentrantLock简介AQS回顾ReentrantLock原理ReentrantLock结构非公平锁的实现原理lock方法获取锁tryRelease锁的释放公平锁的实现原理lock方法 ...

  7. w3cschool-Storm 入门教程

    Storm 基础知识 基础知识 Storm 是一个分布式的,可靠的,容错的数据流处理系统.它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务.Storm 集群的输入流由一个被称作 ...

  8. Apollo架构设计

    Apollo架构设计 Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源.如果去了解它也可以直接去看它的官方文档. 一.配置中心概念 1.背景 在实际开发中都会与配置 ...

  9. 部署 Browser-Use WebUI + DeepSeek 实现浏览器AI自动化

    一.安装部署 1.安装 python3.11 或以上版本   2.安装browser-use pip install browser-use     3.安装 Playwright playwrigh ...

  10. 一个简易socket通信结构

    服务端 基本的结构 工作需要又需要用到socketTCP通讯,这么多年了,终于稍微能写点了.让我说其实也说不出个啥来,看了很多的异步后稍微对异步socket的导流 endreceive后 再begin ...