`

事务总结

阅读更多
转自(http://ayufox.iteye.com/blog/204439)
1. 事务四要素( ACID )

Ø  Atomicity (原子性):工作单元不可分;要么执行所有数据修改,要么不执行任何数据修改。

Ø  Consistency (一致性):事务完成后,必须使所有数据处于一致的状态。

Ø  Isolation (隔离性):无法在事务之外看到中间状态的数据。

Ø  Durability (持久性):事务完成之后,其作用将永久保留在系统中。

2. 并发

1) 并发的基本问题

Ø  丢失更新

Ø  不一致读

Ø  死锁

2) 隔离和只读

3) 锁类型

Ø  共享锁( S )

Ø  排它锁( X )

4) 乐观锁和悲观锁

Ø  乐观锁重在冲突检测,悲观锁重在避免冲突

Ø  乐观锁将比悲观锁拥有更好的并发能力

5) 隔离级别与不一致读错误

隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。

隔离级别
读脏数据
不可重复读
幻影读

Read Uncomitted
Yes
Yes
Yes

Read Committed
No
Yes
Yes

Repeatable Read
No
No
Yes

Serializable
No
No
No


3 . Oralce 事务

1)Oracle 常用锁类型


SQL

None
select

SS(Table-S&Row-S) :行级共享锁,其他对象只能查询这些数据行
Select for update 、 Lock for update 、 Lock row share

SX(Table-S&Row-X) :行级排它锁,在提交前不允许做 DML 操作
Insert 、 Update 、 Delete 、 Lock row share

S(Table-Share) :共享锁
Create index

X(Table-Exclusive) :排它锁
Alter table 、 Drop able 、 Drop index 、 Truncate table


2)Oralce 的隔离级别

ORACLE 提供了 SQL92 标准中的 read committed 和 serializable ,同时提供了非 SQL92 标准的 read-only 。

3. 分布式事务

1)JTA : Java Transaction API

2) 跨资源事务

3) 跨进程事务

4. 事务传播

Ø  Required

Ø  Support

Ø  Mandatory

Ø  Required new

Ø  Not Support

Ø  Never

5 . Spring 对事务的支持

Ø  TransactionAttribute :定义事务属性,包括传播属性、隔离级别、超时时间、是否只读和异常回滚策略

Ø  TransactionAttributeSource :定义了事务属性的获取接口,其实现包括通过 Annotation 获取事务属性 (AnnotationTransactionAttributeSource)

Ø  PlatformTransactionManager :事务管理器接口,其实现了具体的事务策略,包括 JTA 、 Hibernate 、 DataSource 、 JDO 等实现

Ø  TransactionInterceptor :事务拦截器,基于 AOP 的声明式事务

Ø  TransactionTemplate :手工事务模板类
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics