Oracle如何保证并发操作?
2017-03-13 18:47
274 查看
Oracle采用封锁技术保证并发操作的可串行性[/b]。 Oracle的锁分为两大类:数据锁(亦称DML锁)和字典锁。 字典锁是Oracle DBMS内部用于对字典表的封锁。字典锁包括语法分析锁和DDL锁,由DBMS在必要的时候自动加锁和释放锁,用户无权控制。 Oracle主要提供了五种数据锁: 共享锁(S锁)、排他锁(X锁)、行级共享锁(RS锁)、行级排他锁(RX锁)和共享行级排他锁(SRX锁)。 其封锁粒度包括行级和表级。数据锁的相容矩阵如图所示。
Oracle数据锁的相容矩阵
在通常情况下,数据封锁由数据库系统控制,对用户透明。但Oracle也允许用户用LOCK TABLE语句显式对封锁对象加锁。 Oracle数据锁的一个显著特点是,在缺省情况下,读数据不加锁。也就是说,当一个用户更新数据时,另一个用户可以同时读取相应数据,反之亦然。Oracle通过回滚段(Rollback Segment)的内存结构来保证用户不读“脏”数据和可重复读。这样做的好处是提高了数据的并发度。
Oracle提供了有效的死锁检测机制,周期性诊断系统中有无死锁,若存在死锁,则撤消执行更新操作次数最少的事务。 [/b]
Oracle数据锁的相容矩阵
在通常情况下,数据封锁由数据库系统控制,对用户透明。但Oracle也允许用户用LOCK TABLE语句显式对封锁对象加锁。 Oracle数据锁的一个显著特点是,在缺省情况下,读数据不加锁。也就是说,当一个用户更新数据时,另一个用户可以同时读取相应数据,反之亦然。Oracle通过回滚段(Rollback Segment)的内存结构来保证用户不读“脏”数据和可重复读。这样做的好处是提高了数据的并发度。
Oracle提供了有效的死锁检测机制,周期性诊断系统中有无死锁,若存在死锁,则撤消执行更新操作次数最少的事务。 [/b]
相关文章推荐
- [Oracle学习]如何避免并发操作,使某列的数字每天都不会重复。
- 如何取得ORACLE的唯一数值(包括在并发操作中)
- 【Django】Django如何保证并发操作数据一致性问题
- 11.38 CastleActiveRecord中如何保证多线程并发操作的安全与成功?
- 在oracle下,UPDATE、DELETE操作如何从Undo里找到其修改值得前镜像(模拟实验)
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- oracle里如何快速drop column测试(慎用于生产系统,该操作导致表无法访问)
- 关于如何取Dev Express中一些控件中的数据与Oracle的一些操作
- oracle如何实现主键的自增1操作
- 如何用SQL操作oracle的blob字段里的字符串数据!
- oracle day3:如何对表进行增删改询操作
- 如何在Hibernate当中操作Oracle Clob
- Oracle如何操作LOB
- UNIX 如果查询一个共享内存已经被IPCRM,程序中如何操作保证安全
- 对于初学Oracle的朋友,如何使Oracle具有SqlServer一样的操作界面
- 多个客户端操作甘特图时,如何做才能实现不允许对一个控件并发操作
- 如何在oracle里面操作BLOB
- 如何创建和操作Oracle 数据库分区表
- ABAP--如何通过Oracle游标直接操作Oracle的系统表
- oracle的读写表并发操作