`
ayufox
  • 浏览: 273759 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

读书笔记——事务总结

阅读更多

<!----><!----> <!---->

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