简单案例描述:
某运营商的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)进行介绍。
某运营商的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
-
FP, File Object
-
KP, contention in Oracle Data Pump startup and shutdown processes
-
KO, Multiple Object Checkpoint
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/92650/viewspace-1061325/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/92650/viewspace-1061325/