资源供给:并发性控制和锁之一

    简单案例描述:
   某运营商的EAI系统在业务处理逐渐加大之后表现出大量的ITL Lock,从最初的每周一次到后来的每日一次的由于ITL Lock导致的业务系统Hang,被迫重新启动以恢复业务。各路人马(都是顶级国际厂商)进行了会诊和调整,但几乎没有任何效果。由于以前和该客户具有紧密的关系,在某天下午也过去帮忙了,简单看了下即使在所谓的还可以的状态下都是大量ITL Lock,DBA已经增大了maxtrans,效果不大。简单看了下系统,了解了下业务系统的基本公用,基本断定ITL LOCK应该和EAI系统没有太大关系。我要求召集相关人员给我解释下业务流程的具体流转,在听了业务流程流转之后,我的建议很简单,在EAI业务流转到其他业务系统之前增加commit语句。EAI是一个极为简单的应用整合系统,接受指令记录日志并交由Weblogic工作流通过http调用Siebel CRM和CSG计费的相关业务。在本案例中,主要原因在于随着业务量的变大,Siebel CRM和CSG计费系统效率有所降低,导致EAI锁定的时间变长,自然就导致了大量的ITL Lock。
    在这种全省性的运营商业务设计中,系统之间的全同步设计是典型的架构设计错误,必然导致其吞吐量有限效率低下。你如果需要高业务吞吐量,异步设计是一个基本准则。只有在低吞吐量系统,为了使业务简单才会考虑全同步设计。
   事实上有更好的处理方式来解决上面的ITL Lock的问题,表格设计成分区表,分成32或者64个分区,当然还可以更大,依据处理进程id的余数进行分区,使各自进程的操作落在各自分区中,进程之间的冲突自然就变少了。        

      锁是Oracle数据库用来保证数据一致性的基本保证手段,锁是一种Enqueue资源,一般采用FIFO队列实现。至于锁的具体实现如何,我不懂,大家咨询吕海波必然可以获得满意的回答,也许在他的新书中有这部分内容也说不定。
      Oracle数据库主要对于持久性对象进行Enqueue锁定,部分非持久化对象也会进行Enqueue操作。主要的Oracle锁可以分为以下几类: 事务锁,对象锁,文件锁和状态锁。下面是从Oracle文档上复制的Oracle不同的锁类型,我仅仅会介绍其中的部分常见的性能影响比较大的锁(Enqueue)进行介绍。
 
  • BL, Buffer Cache Management

  • BR, Backup/Restore

  • CF, Controlfile Transaction

  • CI, Cross-instance Call Invocation

  • CU, Bind Enqueue

  • DF, Datafile

  • DL, Direct Loader Index Creation

  • DM, Database Mount

  • DR, Distributed Recovery Process

  • DX, Distributed Transaction

  • FP, File Object

  • FS, File Set

  • HW, High-Water Lock

  • IN, Instance Number

  • IR, Instance Recovery

  • IS, Instance State

  • IV, Library Cache Invalidation

  • JI, Enqueue used during AJV snapshot refresh

  • JQ, Job Queue

  • KK, Redo Log "Kick"

  • KP, contention in Oracle Data Pump startup and shutdown processes

  • KO, Multiple Object Checkpoint

  • L[A-P], Library Cache Lock

  • LS, Log Start or Switch

  • MM, Mount Definition

  • MR, Media Recovery

  • N[A-Z], Library Cache Pin

  • PE, ALTER SYSTEM SET PARAMETER = VALUE

  • PF, Password File

  • PI, Parallel Slaves

  • PR, Process Startup

  • PS, Parallel Slave Synchronization

  • Q[A-Z], Row Cache

  • RO, Object Reuse

  • RT, Redo Thread

  • RW, Row Wait

  • SC, System Commit Number

  • SM, SMON

  • SN, Sequence Number

  • SQ, Sequence Number Enqueue

  • SR, Synchronized Replication

  • SS, Sort Segment

  • ST, Space Management Transaction

  • SV, Sequence Number Value

  • TA, Transaction Recovery

  • TC, Thread Checkpoint

  • TE, Extend Table

  • TM, DML Enqueue

  • TO, Temporary Table Object Enqueue

  • TS, Temporary Segment (also TableSpace)

  • TT, Temporary Table

  • TX, Transaction

  • UL, User-defined Locks

  • UN, User Name

  • US, Undo Segment, Serialization

  • WL, Being Written Redo Log

  • XA, Instance Attribute Lock

  • XI, Instance Registration Lock

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/92650/viewspace-1061325/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/92650/viewspace-1061325/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值