关闭

数据库事务

143人阅读 评论(1) 收藏 举报
分类:
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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:120476次
    • 积分:1390
    • 等级:
    • 排名:千里之外
    • 原创:137篇
    • 转载:10篇
    • 译文:0篇
    • 评论:23条
    最新评论