打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Spring学习笔记(十七)
Transaction 那点事儿
(十二)Spring从入门到入土——Spring事务
spring事务传播属性和隔离级别
mysql中的事务
SPRING注解事务管理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服