义臻的博客

不忘初心,不舍昼夜!

数据库事务

1 数据库事务的ACID属性
原子性(atomic)
  对于中包含的操作,要么全部执行,要么全部不执行。
一致性(consistent)
  事务在完成时,必须使所有的数据都保持一致状态。
隔离性(insulation)
    当多个事务并发执行的时候,不同事务之间数据的可见程度。
持久性(durability)
  事务完成之后,更改的数据是永久的。

2 事务的隔离性的级别包括:
Read_Uncommited
Read_Commited
Repeatable_Read
Serializeble

这四种不同的隔离级别可能导致的并发问题:


图片引用自博客:http://blog.csdn.net/bluishglc/article/details/5626009





脏读:一个事务读取了另一个事务改写但尚未提交的数据。


不可重复读:同一次事务中执行了相同的查询两次以上,但每次查询的结果不同。通常由于另一个事务在两次查询更新了数据。


幻影读:一个事务读取了几行数据,接着另一个并发事务插入了几行数据。随后的查询中,第一个事务会发现多了一些原本不存在的数据行。

幻读与不可重复读类似:前者是指两次读取中,另一个事务进行了插入操作,导致读取到原来不存在的值。后者是指两次读取中,另一个事务进行了更新,导致两次的数据信息不一致。

3 事务的传播特性
事务的传播属性是在Spring框架中配置事务的时候需要理解的。Spring支持的事务传播属性有7种:包括:
Required:表示当前方法需要在事务环境中运行。如果当前已经有事务环境,就在当前事务环境中运行,如果当前没有事务环境,就新建一个事务环境并在其中运行。
Required_New:表示当前方法需要在新的事务环境中运行。如果当前已经有事务环境,则挂起。然后新建一个事务环境并在其中运行。
Mandatory:表示当前方法需要在事务环境中运行。如果当前不在事务环境中,就会抛出异常。
Supports:表示当前方法可以在事务环境中运行。如果当前在事务环境中,就以事务的方式运行。如果不在事务环境中,就以非事务方式运行。
Not_Supported:表示当前方法不可以在事务环境中运行。如果当前在事务环境中,则挂起。然后以非事务方式运行。
Never:表示当前方法不能以事务方式运行。如果当前在事务环境中,就会抛出异常。
Nested:表示当前方法以嵌套事务的方式运行。如果当前在事务环境中,即在父事务环境中创建一个子事务环境。如果当前不在事务环境中,就以Required方式运行。



  • 大小: 88.8 KB
  • 大小: 67.2 KB
  • 大小: 75.1 KB
  • 大小: 83.3 KB
  • 大小: 21 KB
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yizhenn/article/details/52384510
想对作者说点什么? 我来说一句

数据库事务隔离级别.docx

2018年04月20日 15KB 下载

transaction事务

2016年10月09日 686B 下载

SQLite 数据库事务

2013年09月03日 1.3MB 下载

C#数据库事务原理及实践

2009年04月24日 102KB 下载

数据库事务开发文档

2012年09月02日 397KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭