`
bobokingbao
  • 浏览: 4196 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle锁策略

阅读更多
Oracle锁策略
1:Oracle只在修改时才对数据加行级锁。正常情况下不会升级到块级锁或表级锁(不过两段提交期间的一段很短的时间内除外,这是一个不常见的操作)。
2:如果只是读数据,Oracle绝不会对数据锁定。不会因为简单的读操作在数据行上锁定。
3:写入器(writer)不会阻塞读取器(reader)。换种说法:读(read)不会被写(write)阻塞。这一点几乎与其他所有数据库都不一样。在其他数据库中,读往往会被写阻塞。尽管听上去这个特性似乎很不错(一般情况下确实如此),但是,如果你没有充分理解这个思想,而且想通过应用逻辑对应用施加完整性约束,就极有可能做得不对。第7章介绍并发控制时还会更详细地讨论这个内容。
4:写入器想写某行数据,但另一个写入器已经锁定了这行数据,此时该写入器才会被阻塞。读取器绝对不会阻塞写入器。

所以oracle在更新数据库时,不能阻塞别人读取数据库,这样就造成了在更新数据库单条记录时,如果有其他人读取相同记录的情况。

相对于比较熟悉的DB2的锁机制有很大的区别,这个比较在IBM dev上有片很全的文章。

http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0512niuxzh/

以下转载:
1.Oracle通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。其DML锁(数据锁)分为两个层次(粒度):即表级和行级。通常的DML操作在表级获得的只是意向锁(RS或RX),其真正的封锁粒度还是在行级;DB2也是通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。其DML锁(数据锁)分为两个层次(粒度):即表级和行级。通常的DML操作在表级获得的只是意向锁(IS,SIX或IX),其真正的封锁粒度也是在行级;另外,在Oracle数据库中,单纯地读数据(SELECT)并不加锁,这些都提高了系统的并发程度,Oracle强调的是能够"读"到数据,并且能够快速的进行数据读取。而DB2的锁强调的是"读一致性",进行读数据(SELECT)时会根据不同的隔离级别(RR,RS,CS)而分别加 S,IS,IS锁,只有在使用UR隔离级别时才不加锁。从而保证不同应用程序和用户读取的数据是一致的。

2. 在支持高并发度的同时,DB2和Oracle对锁的操纵机制有所不同:Oracle利用意向锁及数据行上加锁标志位等设计技巧,减小了Oracle维护行级锁的开销,使其在数据库并发控制方面有着一定的优势。而DB2中对每个锁会在锁的内存(locklist)中申请分配一定字节的内存空间,具体是X锁 64字节内存,S锁32字节内存(注:DB2 V8之前是X锁72字节内存而S锁36字节内存)。

3. Oracle数据库中不存在锁升级,而DB2数据库中当数据库表中行级锁的使用超过locklist*maxlocks会发生锁升级。

4. 在Oracle中当一个session对表进行insert,update,delete时候,另外一个session仍然可以从Orace回滚段或者还原表空间中读取该表的前映象(before image); 而在DB2中当一个session对表进行insert,update,delete时候,另外一个session仍然在读取该表数据时候会处于lock wait状态,除非使用UR隔离级别可以读取第一个session的未提交的值;所以Oracle同一时刻不同的session有读不一致的现象,而 DB2在同一时刻所有的session都是"读一致"的。

分享到:
评论

相关推荐

    Oracle 锁机制问题详解

    ### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...

    Oracle锁 图例

    本文将深入探讨Oracle锁的类型、工作原理以及相关的管理工具。 一、Oracle锁的类型 1. 表级锁:Oracle中的表级锁主要有两种,即排他锁(Exclusive Locks, X locks)和共享锁(Shared Locks, S locks)。排他锁允许...

    查看Oracle锁表

    ### 查看Oracle锁表 在Oracle数据库管理过程中,锁定机制是一项重要的功能,它用于确保数据的一致性和事务处理的安全性。当多个用户试图同时访问同一数据时,可能会出现并发问题,这时就需要通过锁定来控制对数据的...

    快速查找oracle锁对象

    在Oracle数据库管理中,"快速查找Oracle锁对象"是一个关键任务,特别是在处理并发事务和解决性能问题时。当多个用户或进程同时...同时,定期审查和调整数据库的锁策略,能够帮助企业避免因锁问题导致的生产环境故障。

    Oracle锁表处理,Oracle表解锁

    数据库死锁的概念, 所谓...Oracle对于“死锁”采取的策略是回滚其中一个事务,让另外一个事务顺利进行。 对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。

    oracle数据库锁使用

    Oracle 数据库锁是确保数据完整性、一致性以及并发操作的关键机制。在Oracle中,锁主要分为两类:数据锁(DML锁)和字典锁。字典锁主要用于内部管理,特别是语法分析和DDL操作,用户无法直接控制。而数据锁则是我们...

    java调用Oracle的锁表命令

    - 考虑使用乐观锁或悲观锁策略,根据应用的并发需求选择合适的方式。 通过以上步骤,你可以在Java程序中安全有效地调用Oracle的锁表命令,确保数据一致性并优化并发性能。对于更复杂的应用场景,如分布式事务,...

    oracle解锁 oracle资料

    根据提供的文件信息,“oracle解锁 oracle资料”,我们主要探讨的是Oracle数据库中用户账户解锁的方法与相关知识点。Oracle数据库作为全球领先的关系型数据库管理系统之一,在企业级应用中占据着举足轻重的地位。...

    Oracle数据库口令策略.docx

    Oracle数据库的口令策略是确保系统安全性和防止未经授权访问的关键组成部分。在Oracle中,口令管理涉及多个方面,包括口令生命周期、复杂性、历史记录和资源限制。以下是对这些概念的详细解释: 1. **Profiles...

    Oracle锁表问题的简捷处理技巧

    ### Oracle锁表问题的简捷处理技巧 在Oracle数据库开发过程中,锁机制是确保数据一致性和并发控制的关键组件之一。当多个用户或进程试图同时访问同一个资源时,Oracle数据库通过实施不同的锁定策略来协调这些访问...

    oracle常见的锁查询和处理

    更好的方式是优化SQL语句,减少长时间事务,或者使用更细粒度的锁定策略来降低锁冲突的可能性。 在分布式事务中,锁的问题更为复杂,可能涉及到多个数据库实例间的协调。在这种情况下,锁定可能会导致分布式事务的...

    Oracle五种表级排他锁的总结和归纳

    排他锁是Oracle锁定策略的重要组成部分,它们限制了其他事务对特定资源的访问,以防止数据的不一致性和并发问题。 1. 共享锁(Share Table Lock,S) 共享锁允许多个事务同时读取同一表的数据,但不允许任何写操作...

    oracle锁讲解笔记

    ### Oracle锁机制详解 #### 锁的基本概念与作用 锁机制是Oracle数据库中用于管理并发访问共享资源的关键组件。在多用户环境中,确保数据的一致性和完整性至关重要,尤其是在多个会话试图同时修改相同数据的情况下...

    oracle用户解锁三种方法

    Oracle数据库还包含一些预定义的系统用户,如`CTXSYS`, `DBSNMP`, `LBACSYS`, `MDDATA`, `MDSYS`, `DMSYS`, 和 `OLAPSYS`等,它们各自服务于特定的功能,例如文本搜索、数据库监控、安全策略管理、空间数据处理和...

    oracle用户解锁

    因此,了解如何正确地解锁Oracle用户是非常必要的。 ### Oracle用户解锁步骤 #### 1. 登录到Oracle数据库 首先,需要使用具有足够权限的用户(如SYSDBA权限)登录到Oracle数据库。通常,这会是“sys”或“system”...

    oracle 解锁 imp等学习

    在Oracle数据库中,用户账户可能会因为安全策略或错误操作被锁定。当一个用户尝试多次登录失败后,系统为了保护数据库安全,会自动锁定该用户的账户。解锁用户通常需要管理员权限,通过SQL命令如`ALTER USER ...

Global site tag (gtag.js) - Google Analytics