数据库事务

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

[color=red]2 事务的隔离性的级别包括:[/color]
Read_Uncommited
Read_Commited
Repeatable_Read
Serializeble

这四种不同的隔离级别可能导致的并发问题:
[img]http://dl2.iteye.com/upload/attachment/0119/3805/e2e6d8c2-66b6-3356-90be-18be6b92fb21.png[/img]

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


[img]http://dl2.iteye.com/upload/attachment/0119/3797/5d29a744-e2fd-3ede-a635-6e39eb9ef4b4.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0119/3799/2e1b7448-1fbc-3614-aee5-3a3f60ebabcb.png[/img]
脏读:一个事务读取了另一个事务改写但尚未提交的数据。

[img]http://dl2.iteye.com/upload/attachment/0119/3801/57f0b302-6d07-3f4d-ab34-5a00a07502f4.png[/img]
不可重复读:同一次事务中执行了相同的查询两次以上,但每次查询的结果不同。通常由于另一个事务在两次查询更新了数据。

[img]http://dl2.iteye.com/upload/attachment/0119/3803/3cf85e08-87dd-30fa-b273-5533b55100ca.png[/img]
幻影读:一个事务读取了几行数据,接着另一个并发事务插入了几行数据。随后的查询中,第一个事务会发现多了一些原本不存在的数据行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值