`
zzhonghe
  • 浏览: 248155 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle的并发和多版本控制

    博客分类:
  • DB
 
阅读更多

写不会阻塞读,这是Oracle和其他数据库的一个根本的区别。Oracle能够同时物化多个版本的数据,每次写入数据,都会另外生成一个版本,并附上时间戳,而当一个读操作发起时,它只能读到这个时间戳以内的版本,超过这个时间戳所更新的数据,是不会返回在结果集里面。所以一个程序如果只是读操作,那么它永远也不会被阻塞,也不会发生死锁。从某种意义上看,Oracle天然就具备了读写分离的特性。不像Mysql,需要采用主备集群的方式来实现读写分离。

 
 
支持的事务的隔离级别是Read Commited和Serializable。 对于Read Commit, 他允许“不可重复读”和“幻读”
  • 不可重复读
        • 第一次读获取了一个结果集, 然后集合中的某些列值发生了变化,那么同一session中再次读的时候,这些列值会被查出到结果集中
  • 幻读
      • 第一次读获取了一个结果集, 然后集合中的某些行被删除或者添加了新行,那么同一session中再次读的时候,这些行的改动被查出到结果集中
 
Serializable的实现和其他数据稍微有点不一样:
  • 首先由于读一致性的存在,读不会被阻塞,Serializable是对于更新操作而言的。当一个更新操作发现需要更新的数据是被锁定的时候,会抛出异常ORA_08177。而不是像其他数据库一样进行等待。
  • 一个事务开始后,期间不会有任何数据修改,直至Commit或者Rollback
 
Undo回滚段, 如果回滚段的空间小,那么用完后,就会发生snap shot too  old错误 ORA_1555
 
 
查询热表的时候,IO操作会明显增多,原因在于热表的数据存在很多个数据更新的版本,当读到某个被更新的数据块, 发现时间戳太新, 于是去找到undo中的匹配的版本。如果仍然太新,那么就继续找下去。这些都是额外的IO操作,来获取undo信息.
 
 
而由于写一致性的存在,在更新热表的时候,如果发现某个数据的时间戳不一致,那么会重启更新。比如,修改了9999条数据,在准备修改10000的时候,发现其版本不对,那么数据库会重新更新这10000条。 而如果这个表上有相对于行修改的触发器,那么这些触发器会被重复地触发, 对性能的影响会非常恐怖。
 

 

0
0
分享到:
评论

相关推荐

    【Oracle 并发】

    本文将深入探讨Oracle并发控制机制及其在实际应用中的重要性,结合提供的"ORACLE.txt"文件,我们可以进一步理解Oracle如何处理并发问题。 并发控制在多用户环境中至关重要,因为它确保了数据的一致性和完整性,避免...

    Oracle并发问题处理

    2. **确定合适的并发处理机制**:基于业务需求选择合适的并发控制技术来确保数据的一致性和准确性。 #### Oracle并发处理机制详解 1. **利用数据库悲观锁完成并发控制** - **悲观锁机制**:这是一种较为传统的...

    DB2和 Oracle的并发控制(锁)比较

    DB2和Oracle都是广泛应用的关系型数据库,它们都采用了锁作为主要的并发控制手段。本文将对比分析DB2和Oracle的并发控制,特别是锁的实现和差异。 首先,数据库事务的ACID特性是并发控制的基础,其中A(原子性)、C...

    ORACLE最大并发数查询

    在IT领域,尤其是在数据库管理与优化中,了解和掌握数据库的最大并发用户数是...此外,考虑到并发控制对系统性能的影响,建议在进行大规模并发测试或部署新应用前,先进行充分的压力测试和调优,以确保系统的稳定运行。

    DB2和 Oracle的并发控制

    【Oracle并发控制】Oracle同样采用锁机制来控制并发,但其具体实现可能与DB2有所不同。Oracle也支持行级和表级的锁定,但具体的锁模式和兼容性矩阵可能会有差异。Oracle还提供了其他的并发控制技术,如多版本并发...

    Oracle中使用锁进行并发控制

    锁的运用是并发控制的核心,它能够在多用户环境中协调不同事务的操作,防止数据冲突和异常状态的出现,如脏读、不可重复读和幻觉读。 ### 并发控制的重要性 在现代数据库系统中,尤其是像Oracle这样的大型关系型...

    DB2和 Oracle的并发控制(锁)的比较

    Oracle的并发控制同样基于锁,但它采用的是多版本并发控制(MVCC),这种机制下,每个事务看到的数据版本取决于其开始时间,而非实际的最新状态,从而减少了锁的竞争。Oracle的锁类型包括行级锁(如ROWEXCLUSIVE,...

    ORACLE-EBS并发管理器[整理].pdf

    Oracle E-Business Suite 并发管理器的使用场景包括报表类报表、流程类多用于批量事务处理, 或是长时间运行的业务,如库存管理器批量处理接口表中的临时事务。并发管理器可以将这些任务安排到后台执行,提高系统...

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

    作为全球知名的关系型数据库产品,ORACLE数据库具备出色的数据库管理能力、超强的稳定性和良好的并发控制机制,能够支持多用户并发处理,保证了在同一时间点多个用户可以对同一个数据库对象进行访问和操作。...

    oracle数据库的并发控制.docx

    ### Oracle数据库的并发控制 #### 一、并发处理概述 ...通过上述介绍,我们可以了解到Oracle数据库如何通过并发控制机制来确保数据的完整性和一致性,同时也了解到了一些高级的并发控制技术及其应用场景。

    oracle 锁及并发性

    悲观锁和乐观锁是两种不同的并发控制策略。 - **悲观锁**:假设数据会发生冲突,因此在事务开始时即锁定数据,直到事务结束。这种方式虽然能有效避免冲突,但可能导致资源占用时间较长。 - **乐观锁**:假设数据...

    oracle的11.2.0.1.0版本的oci

    8. **多版本并发控制**:优化了MVCC(多版本并发控制)机制,提升了在高并发环境下的事务处理能力。 oci.dll作为OCI库的一部分,是实现这些特性和功能的关键动态链接库文件。在Windows环境中,该文件用于加载和执行...

    Oracle9i的数据库管理, Oracle9i数据库对象的管理,Oracle9i数据库的安全性,Oracle9i数据库的完整性和并发控制等

    Oracle9i使用了多版本并发控制(Multiversion Concurrency Control, MVCC),通过读写一致性(Read-Write Consistency)和快照隔离(Snapshot Isolation)确保用户在执行事务时不会看到其他事务的中间状态。...

    oracle8i版本之前的经典文档

    总之,Oracle 8i版本之前的配置和语法定义涵盖了数据库设计、数据操作、性能优化、事务处理、安全性控制等多个方面,这些知识点构成了现代数据库管理系统的基石,对后续版本乃至整个数据库行业的发展产生了深远影响...

    PowerBuilder_Oracle体系结构下的并发控制.pdf

    事务隔离机制是Oracle并发控制的基础,它确保了一个事务的操作不会被其他事务看到,直到该事务完成。Oracle8i支持四种事务隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读...

    并发访问ORACLE数据库的数据死锁分析和解决措施.pdf

    并发访问ORACLE数据库的数据死锁分析和解决措施 Oracle数据库是一个关系型数据库管理系统,广泛应用于各种行业领域。在实际应用中,高并发访问数据库可能会导致数据死锁问题,本文将对数据死锁分析和解决措施进行...

    Oracle oci库 11_2 10_2 还有19.5版本 以及19.5版本的SQLplus

    OCI库提供了多种功能,包括数据查询、事务处理、并发控制、性能优化等,使得开发者能够高效地构建高性能的数据库应用。 在您提供的压缩包中,包含了不同版本的Oracle OCI库,分别是11_2、10_2以及19.5版本。这些...

Global site tag (gtag.js) - Google Analytics