`
topcat
  • 浏览: 284944 次
  • 性别: Icon_minigender_1
  • 来自: 湖北武汉
社区版块
存档分类
最新评论

oracle数据库并发二

阅读更多

阻塞

如果一个会话持有某个资源的锁,而另一个会话在请求这个资源,就会出现阻塞(blocking )。这样一来,请求的会话会被阻塞,它会“挂起”,直至持有锁的会话放弃锁定的资源。

数据库中有5 条常见的DML 语句可能会阻塞,具体是:INSERTUPDATEDELETEMERGESELECT FOR UPDATE 。对于一个阻塞的SELECT FOR UPDATE ,解决方案很简单:只需增加NOWAIT 子句,它就不会阻塞了。

例子

时间点

Session1

Session2

T1

开始事务

 

T2

 

开始事务

T3

Update A set col1=2 where id=1

获得id1 的行的排它锁(X

 

T4

 

Update A set col1=5 where id=1

等待session1 释放id1 的行的排它锁(X

T5

commit

 

T6

 

commit

在上面的例子中

Session1 T3 时刻获得id1 的行的排它锁(X),T4 时刻,session2 也要更新该行,也要在行上加排它锁(X ),由于session1 的事务还没有提交,因此session2 这个时候就被阻塞了,只到session1 的事务提交或回滚后session2 也获得此行的排它锁(X )使事务得以进行。

死锁

       如果你有两个会话,每个会话都持有另一个会话想要的资源,此时就会出现死锁(deadlock )。

例子

时间点

Session1

Session2

T1

开始事务

 

T2

 

开始事务

T3

Update A set col1=2 where id=1

获得id1 的行的排它锁(X

 

T4

 

Update B set col1=5 where id=4

获得id4 的行的排它锁(X

T5

Update B set col1=6 where id=4

等待session2 释放id4 的行的排它锁(X

 

T6

 

Update A set col1=8 where id=1

等待session1 释放id1 的行的排它锁(X

T7

commit

 

T8

 

commit

在上面的例子中

    Session1 T3 时刻获得表Aid1 的行的排它锁(X),T4 时刻,session2 获得表Bid4 的行的排它锁(X),T5 时刻,session1 要更新表Bid4 的行,要在行上加排它锁(X ),由于session2 的事务还没有提交,因此session1 这个时候就被阻塞了,T6 时刻session2 要更新表Aid1 的行,要在行上加排它锁(X ),由于session1 的事务还没有提交,因此session2 这个时候就被阻塞了,这时两个会话都被对方阻塞了于是死锁就发生了。

    oracle 中,oracle 会自己检测死锁,一旦检测到就会回滚该语句,在这个例子中oracle 会在T6 时刻检测到死锁并回滚该语句,但session2T4 上仍然保持着锁,因此session1 还是不能继续进行。

    即使对同一个表操作也会出现死锁的情况

时间点

Session1

Session2

T1

开始事务

 

T2

 

开始事务

T3

Update A set col1=2 where id=1

获得id1 的行的排它锁(X

 

T4

 

Update A set col1=5 where id=4

获得id4 的行的排它锁(X

T5

Update A set col1=6 where id=4

等待session2 释放id4 的行的排它锁(X

 

T6

 

Update A set col1=8 where id=1

等待session1 释放id1 的行的排它锁(X

T7

commit

 

T8

 

commit

 

分享到:
评论

相关推荐

    ORACLE最大并发数查询

    本文将基于给定文件的标题、描述、标签以及部分内容,深入探讨如何查询Oracle数据库的最大并发数,以及这一参数对系统性能的影响。 ### Oracle最大并发数查询 在企业级应用中,Oracle数据库因其强大的数据处理能力...

    Veeam 备份恢复oracle数据库详细配置文档

    二、推送 Oracle RMAN Plugin 推送 Oracle RMAN Plugin 是为了让 Veeam 备份恢复 Oracle 数据库。需要针对 Oracle 源机和 Oracle 恢复目标机都推送 Oracle RMAN Plugin。在推送 Oracle RMAN Plugin 之前,需要添加 ...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等多个方面的内容。这个大作业包含了PPT演示文稿、Word文档以及可能的源代码,为学习者提供了全面了解...

    ORACLE数据库并发访问控制机制及访问冲突的解决方法.pdf

    在介绍ORACLE数据库并发访问控制机制及访问冲突的解决方法之前,首先需要了解ORACLE数据库的基础知识。作为全球知名的关系型数据库产品,ORACLE数据库具备出色的数据库管理能力、超强的稳定性和良好的并发控制机制,...

    易语言oracle数据库连接模块源码

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,适用于处理大量数据和并发事务。 Oracle数据库连接模块的核心在于如何建立和管理与Oracle服务器的通信。在这个模块中,通常会用到Oracle的数据访问接口,如...

    《Oracle数据库性能优化实践指南》PDF

    《Oracle数据库性能优化实践指南》是一本专注于Oracle数据库性能调优的专业书籍,旨在帮助读者深入理解和掌握如何在实际环境中提升Oracle数据库的运行效率。Oracle数据库是全球广泛使用的大型企业级数据库管理系统,...

    Oracle数据库使用指南

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,尤其在企业级应用中占据主导地位。本指南将针对初学者,详细介绍Oracle数据库的基础知识、安装与配置,以及一些常用的操作和管理技巧。 **1. Oracle...

    Oracle数据库指南.pdf

    11g版本中的“Release 2”表示这是该版本的第二个重要更新。 SQL(Structured Query Language)是用于访问和操作数据库的标准编程语言。Oracle Database的SQL语言参考手册详细描述了用于Oracle数据库的SQL语法、...

    oracle数据库简单介绍

    2. **Oracle概述**:Oracle数据库采用SQL语言进行数据操作,并支持分布式数据库系统、事务处理、并发控制以及数据安全性。它的特点包括高级的数据恢复机制、高效的查询优化器、多租户架构(Oracle Container for ...

    Oracle数据库学习指南

    45. 在ORACLE7数据库并发控制技术的研究及其应用 46. 在SQLPlus中insert进的都是中文的,为什么一存入服务器后,再select出的就是???了 47. 在客户端处理Oracle的数据行加锁问题 48. 怎样查看init_ora文件 49. ...

    Oracle数据库应用课件

    Oracle数据库以其稳定性、可扩展性和安全性著称,支持大规模并发事务处理,适合复杂的企业级应用。此外,Oracle还提供了一整套数据库解决方案,包括数据库服务器、开发工具、中间件和云服务。 “Oracle体系结构”是...

    Oracle数据库管理员技术指南,Oracle数据库管理员技术指南

    ### Oracle数据库管理员技术指南:建立和配置数据库 在IT领域,尤其是数据库管理中,Oracle数据库因其卓越的性能和广泛的应用而备受青睐。对于希望成为Oracle数据库管理员(DBA)的专业人士而言,掌握创建和配置...

    oracle数据库调优配置

    这些参数的合理配置,可以在很大程度上提升Oracle数据库的并发处理能力和资源利用效率,特别是在处理大量并发请求时表现更为显著。 #### 方案二:内存分配优化 在高负载环境下,合理分配和管理内存资源对于Oracle...

    oracle数据库基础知识

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它在企业级数据存储和管理中扮演着核心角色。Oracle数据库基础知识是每个IT从业者或自学者必备的知识领域。以下将深入讲解Oracle数据库的一些关键概念和操作...

    oracle数据库、表空间及数据文件之间的关系

    ### Oracle数据库、表空间及数据文件之间的关系 在Oracle数据库管理系统的架构中,数据库、表空间与数据文件之间存在着紧密的联系。理解这些组件之间的相互作用对于有效地管理和维护Oracle数据库至关重要。 #### ...

    oracle数据库系统应用与开发

    二、Oracle数据库安装与配置 安装Oracle数据库涉及选择合适的软件版本、规划数据库实例、配置网络服务等步骤。初学者需要了解如何安装Oracle Database Server、配置监听器和服务,以及创建数据库实例。此外,管理...

    Oracle数据库基础教程[孙风栋等编著][习题解答

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,由甲骨文公司开发并维护。它以其强大的功能、高效性能和高度可扩展性而备受青睐,尤其在企业级应用中占据了重要地位。本教程《Oracle数据库基础教程》由...

    Oracle数据库驱动jar包

    Oracle数据库驱动jar包是Java应用程序连接Oracle数据库的关键组件,它提供了Java编程语言与Oracle数据库间的接口。在J2EE(Java 2 Platform, Enterprise Edition)开发中,这些jar包是必不可少的,因为它们包含了...

Global site tag (gtag.js) - Google Analytics