【Oracle 11g】梳理下和事务相关的一些概念

事务(Transaction):数据库区别于文件系统的特性之一。
事务会把数据库从一种一致状态转变为另一种一致状态,这就是食物的任务。
Oracle多版本控制机制提供了非阻塞读,以及读写一致性。

回顾下oracle的锁:

  • AE锁是一个版本锁,这是oracle 11g新增的。
  • TX(事务处理锁):修改数据的事务在执行期间会获得这种锁。
  • TM(DML队列)锁和DDL锁:在你修改一个对象的内容(对应TM锁)或对象本身(对应DDL锁)时,这些锁可以确保对象的结构不被修改。
  • 闩(latch)和Mutex:这是Oracle的内部锁,用来协调对其共享数据结构的访问。

回顾下事务隔离级别:

ANSI隔离级别

隔离级别脏读不可重复读幻象读
READ UNCOMMITTED允许允许允许
READ COMMITTED允许允许
REPEATABLE READ允许
SERIALIZABLE

隔离级别的3中情况

  • 脏读(dirty read):你能读取未提交的数据,也就是脏数据。
  • 不可重复读(nonrepeatable read):这意味着,如果你在T1时间读取某一行,在T2时间重新读取这一行时,这一行可能已经有所修改,也许它已经消失,也可能被更新了。
  • 幻象读(phantom read):如果你在T1时间执行一个查询,在T2时间再次执行这个查询,此时数据库中可能已经增加了行。与不可重复读的区别是:读取的数据不会改变,只是有了更多的数据。

Oracle支持READ UNCOMMITTED的”精神“,即非阻塞读。但不支持脏读[1]。

如果有人要查询锁定的数据,此时不同的数据库就会出现不同的行为。Oracle会绕开已经修改的数据,它不会从undo段(也称为回滚(rollback)段)重新建立原数据。因此可以返回一致而正确的大难,而无需等待事务提交。

事务的ACID特征。

  • 原子性(atomicity):事物中的所有动作要么发生,要么都不发生。
  • 一致性(consistency):事务将数据库从一种一致状态装变为下一种一致状态。
  • 隔离性(isolation):一个事务的影响在该食物提交前对其它事务都不可见。
  • 持久性(durability):事务一旦提交,其结果就是永久性的。

[1] Oracle_Database_9i10g11g编程艺术深入数据库体系结构第2版221页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值