您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

db#事务#隔离级别#spring事务

bubuko 2022/1/25 20:05:44 java 字数 1680 阅读 1317 来源 http://www.bubuko.com/infolist-5-1.html

数据库事务包含下面四个特性: 原子性(Atomicity):是指一个事务要么全部执行,要么不执行。也就是说一个事务不可能只执行了一半就停止了。 一致性(Consistency):是指事务的运行并不改变数据库中数据的一致性。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。 隔离 ...

数据库事务包含下面四个特性:

  • 原子性(Atomicity):是指一个事务要么全部执行,要么不执行也就是说一个事务不可能只执行了一半就停止了
  • 一致性(Consistency):是指事务的运行并不改变数据库中数据的一致性例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。
  • 隔离性(Isolation):是指两个以上的事务不会出现交错执行的状态因为这样可能会导致数据不一致
  • 持久性(Durability):事务的持久性是指事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚

原子性四基础,隔离性是手段,持久性是目的。原子性、隔离性、持久性都要服务于一致性。


隔离性是手段,有四个手段(级别):

  • Read Uncommitted(读取未提交内容)
  • Read Committed(读取提交内容,mysql的默认隔离级别)
  • Repeatable Read(可重读)
  • Serializable(可串行化)

上面四个手段从上到下,级别越来越高,并发性越来越差,安全越来越高。


高并发下容易产生的问题(都是因为隔离级别导致的):

  • Dirty Read(脏读)
  • Unrepeatable Read(不可重复读)
  • Phantom Read([?fænt?m]幻读)

脏读:事务A读到了事务B未提交的数据,事务A基于此做了其他操作。
不可重复读:事务A读取到了事务B已提交的更改数据。
幻读:鬼在读,不知道发生了什么事情。事务A读取到了事务B已提交的新数据。

 

隔离级别以及高并发下可能出现的问题:

技术分享图片

 

 


--------------------------------------------------

spring的隔离级别设置:

db#事务#隔离级别#spring事务

原文:https://www.cnblogs.com/luohaonan/p/12492126.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶