mysql事务隔离级别和spring Transaction事务传播

事务的ACID原则是什么?

  1. 原子性(atomicity):最小且不可分割的。要么都执行,要么都不执行。
  2. 一致性(consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态
  3. 隔离型(isolation):各事务同步执行时,所获取的数据,不受其他事务的影响。
  4. 持久性(durability):事务提交之后,结果永远保存在数据库中。

并发下事务会产生什么问题?

  1. 脏读:事务A读取了事务B未提交的数据。
  2. 不可重复读:在同一个事务里面读取了两次某个数据,但是读出来的数据不一致。
  3. 幻读:在同一个事务里面读取了两次某个数据,后一次查询到了前一次没有查到的记录(专指新插入的行)。

mysql事务的隔离级别有几种?

  1. DEFAULT:默认隔离级别(REPEATABLE-READ)
  2. READ_UNCOMMITTED:读未提交。能够读取到其他事务未提交的数据
  3. READ_COMMITTED:读已提交。能够读取到其他事务已提交的数据。
  4. REPEATABLE_READ:重复读。
  5. SERLALIZABLE:串行化。不管多少事务挨个执行。

mysql查询隔离级别:

1.查看当前会话隔离级别

select @@tx_isolation;(mysql版本 8.0 之前)

select @@transaction_isolation (mysql版本 8.0 以后)

2.查看系统当前隔离级别

select @@global.tx_isolation;

3.设置当前会话隔离级别

set session transaction isolatin level repeatable read;(参数可以为:Read uncommitted|Read committed|Repeatable read|Serializable))

只对当前会话有效

4.设置系统当前隔离级别

set global transaction isolation level repeatable read;

此后所有的会话有效,当前已经存在的会话不受影响

spring Transaction事务传播行为有哪几种?

  1. PROPAGATION_REQUITRED:如果当前没有事务就创建一个新事务。如果当前存在事务则加入。(常用)
  2. PROPAGATION_NESTED:如果当前没有事务就创建一个新事务。如果当前存在事务,则在嵌套事务内执行。
  3. PROPAGATION_SUPPORTS:如果当前没有事务就已非事务运行。如果当前存在事务则加入。
  4. PROPAGATION_MANDATORY:如果当前没有事务则抛出异常。如果当前存在事务则加入。
  5. PROPAGATION_REQUITRED_NEW:无论当前是否存在事务,都创建新事务。
  6. PROPAGATION_NOT_SUPPORTED:以非事务运行。如果当前存在事务则把当前事务挂起。
  7. PROPAGATION_NEVER:以非事务运行。如果当前存在事务则抛出异常。

(2)声明式事务

来源:https://www.icode9.com/content-2-821501.html

(0)

相关推荐

  • (十二)Spring从入门到入土——Spring事务

    Spring事务 事务是逻辑上的一组操作,要么都执行,要么都不执行 事务的特性(ACID) 原子性 一致性 隔离性 持久性 Spring管理事务的方式有几种 程序是否支持事务是取决于数据库是否支持事务 ...

  • mysql中的事务隔离级别及可重复读读提交详细分析(mvcc多版本控制/undo log)

    一.事物隔离级别 读未提交(read uncommitted)是指,一个事务还没提交时,它做的变更就能被别的事务看到.通俗理解,别人改数据的事务尚未提交,我在我的事务中也能读到. 读提交(read c ...

  • 聊一聊mysql的锁和事务隔离级别

    锁类型 - 性能锁 从性能上来看,可以分为两种类型的锁,分别是:乐观锁和悲观锁. 乐观锁是数据版本号(version)机制实现的,一般通过为数据库表增加一个数字类型的 "version&qu ...

  • 数据库中事务的几种隔离级别分别解决了哪些问题

    前面一直在写 JVM 系列的文章,直到有一天,卡壳了,后面不知道写啥了,原因就是笔者是一个菜鸟(公众号名称就能看出),懂得少,理解也不够透彻,导致差不多快两个月没更了(主要还是因为懒). 最近打开微信 ...

  • 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现

    来源 | 阿丸笔记 提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一 ...

  • Spring 双层事务,我抛出的异常去哪了?

    作者:AMOS0626 系统 A 调用系统 B 执行数据同步,系统 B 返回了错误提示,系统 A 需要将前边保存的回滚掉,同时把错误信息向上抛. 大致代码如下 @Service("noteS ...

  • 中日举行海洋事务高级别磋商团长会谈

    2021年1月20日,外交部边界与海洋事务司司长洪亮同日本外务省亚洲大洋局局长船越健裕以视频方式共同主持中日海洋事务高级别磋商团长会谈. 双方强调全面落实领导人共识和四点原则共识,加强中日海洋事务高级 ...

  • 一文讲懂数据库隔离级别

    来源:Python 技术「ID: pythonall」 相信做后端开发的童鞋肯定没少和数据库打交道,提起数据库,又不能不说数据库事务隔离级别,毕竟这是保证数据可靠一致的重要基石.网上介绍数据库隔离级别 ...

  • 还原面试现场-ACID与隔离级别

    前言 现如今JAVA开发工程师的数量越来越多,但大多数工程师平时做的工作都是简单的CRUD,当你一直处于这种舒适的环境中不追求进步的时候,如果哪一天你突然想要改变环境,换个工作,去与面试官当面聊技术的 ...

  • 英国监狱新增2000个临时牢房,用于隔离囚犯,以防止病毒传播

    这是唐宁街上的猫第1378篇原创文章 监狱将把囚犯安置在2000个临时牢房中,用以隔离病毒.在过去的三个月中,多余的房间已被用来隔离囚犯,以防止冠状病毒在监狱中爆发.司法部长罗伯特巴克兰已下令英格兰和 ...