数据库事务的处理 (ACID(Atomic/Consistency/Isolation/Durability))

1. ACID (Atomic/Consistency/Isolation/Durability)

Atomic: 事务是原子性的,一个事务不能影响另一个事务,事务不可再分。

Consistency: 事物的处理应保持一致性,如对数据库约束的违反,对所有事务是一致的,要么都提交,要么都回滚。

Isolation: 各个事务是相互隔离的,事务之间相互独立

Durability: 事务是可持久的,事务的持久后的消息应确切的告知用户,持久的成功与失败,不依赖计算机的其他持久条件

 

2. 数据库事物处理中的问题

2.1 Lost update, 两个事物同时操作一行,第二个事物失败,第一个事物的更新也丢失。 (RMDB不会发生)

2.2 Dirty Read:一个事物读到另一个事物未提交的数据 (Default RMDB ISOLATION read commit 不会发生)

2.3 Non Repeatable Read:一个事物两次读取同一行数据,却又不同的结果 (第二次读到另一个事物提交的修改update, Oracle/SqlServer/Mysql default read commit 会发生)

2.4 Phantom Read:同一个事物,第二次读到第一次未出现的数据 (另一事物插入并提交insert, read commit会发生)

2.5 Second Lost updates : (两个事物修改同一行,第一次的修改失效,不是一个问题,但是一种case)

 

3. 几种数据库隔离级别 :Oracle/SqlServer (都是读提交 read committed) Mysql (Repeatable_read)

 

4. 关于ResultRet 在取得后的结果集问题 (ReadCommitted, 和 不同数据库的区别,Oracle 使用快照技术,保证的数据在某一时间点上的不可变性)

我们看看Oracle 的ResultSet在forward_only 条件下,它是可以保证结果的一只的

4.1 stmt.executeQuery()

4.2 while(rs.next())

4.3 Insert data into table,

4.4. rs not show the committed data above.

4.5, stmt.executeQuery() again

4.6 while(rs.next)

4.7 rs show the committed data. 

 

 

ISOLATION

Dirty Read

Non Repeatable Read

Phantom Read

SERIALIZABLE

No

No

No

Repeatable Read

No

No

Yes

Read Committed

No

Yes

Yes

Read Uncommitted

Yes

Yes

Yes

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值