序列的性能问题

来源:互联网 发布:阿里云 rds sql审计 编辑:程序博客网 时间:2024/06/15 07:53
在RAC环境中,序列的Cache问题可能会对性能有着决定性的影响,缺省的序列Cache值为20,这对RAC环境远远不够。
如果存在序列号使用的竞争,就可能在数据库中看到明显的队列等待:
enq: SQ - contention

在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这些值在客户的环境中都有采用。
这是RAC设置和RAC使用的基本常识,不可或忘。

在以下测试中,可以显示Cache序列对于性能的影响:
http://space.itpub.net/14941137/viewspace-629941

摘要如下:
RAC两个会话分别处于不同node同时并发循环间断去取4万个值  :            
nocache:               2100s
cache =1000:         55s
差别却是好大。

单Instance数据库单会话循环不间断去1-4万个值  测试(在家里笔记本上测试结果)过程如下:
nocache:             37.7s          10000   
cache :20            4.31s          10000
cache :100           2.92s          10000
cache :1000            5.56s              40000

nocache:                 97.7s             40000


基本上cache 大于20的时候性能基本可以接受,最好设置100以上,
nocache的时候性能确实很差,最大相差20倍.

排 序参数:oracle默认是NOORDER,如果设置为ORDER;在单实例环境没有影响,在RAC环境此时,多实例实际缓存相同的序列,此时在多个实例 并发取该序列的时候,会有短暂的资源竞争来在多实例之间进行同步。因次性能相比noorder要差,所以RAC环境非必须的情况下不要使用ORDER,尤 其要避免NOCACHE   ORDER组合;

在某些版本中存在BUG,会导致过度的 enq : SQ 竞争。
如在Oracle Database 11g中存在 IDGEN$ 序列 cache 设置过小问题,可能导致严重竞争,建议增加该序列的Cache值设置。
0 0
原创粉丝点击