序列有四种组合:

a. CACHE + NOORDER
b. CACHE + ORDER
c. NOCACHE + NOORDER
d. NOCACHE + ORDER
即使在单例配置下,当有大量的sequence需要产生的时候,性能压力和存储sequence值的行锁定代价相关。
NOCACHE与CACHE的性能
      当使用cache时,dictionary cache(row cache)仅仅当出现新的水位线时才会更新一次。例如当cache是20,nextval第一次请求时,dictionary cache中的sequence的row cache值改变,增加20。DBA_SEQUENCES的LAST_NUMBER字段以cache值或20增加。抽取出存储于shared pool的20值,将会分配给请求nextval的session。v$_sequences(这个表应该不是Oracle官方提出的)允许知道sequence是否已经被缓存于shared pool中。

      当不使用cache时,dictionary cache不得不对于任何nextval请求都有进行一次更新。意味着row cache不得不随着每次nextval的请求被锁定和更新。多个session同时请求一个nextval因此将会被block在一个’row cache lock'等待中。
      当使用cache+order和RAC(cluster_database=true)时,需要使用序列中nextval的session需要得到一个排它实例SV锁,在shared pool中插入或更新序列值之前。当多个session同时需要同一个序列时,一些session将会等待'DFS lock handle'等待事件。

      因为这些序列化机制的结果,整个序列,例如可能以最快的速度增长一个序列,不会随着RAC节点的个数扩展,当序列没有cache+序列order/序列没有order。相比于没有cache的序列,cache的序列性能更好。
     由于非cache的order序列的序列化机制,序列的性能不会随着RAC节点个数扩展,例如性能不能提升。甚至性能会随着节点个数降低一些,例如因为要花费更多时间得到一个row cache锁或SQ入队列,特别是当参与更多节点时。但从1个节点扩展为2个节点时,性能降低的效果可见,从2个到3个时性能降低的效果也是可见的,但是当有更多的节点加入进来时则趋于平缓。


总结下,序列其实是有顺序的,只是默认是NOORDER,并行服务器才需要这种顺序,如果仅仅将序列作为主键不关注顺序那还好说。但使用序列也是有争抢的,因为要保证它的唯一性,所以对于并发量很大的系统可以采用CACHE,缓存一部分序列值,减少争抢,但同时需要冒着缓存丢失的风险,就像PCTFREE和PCTUSED这对参数一样,存在着不可调和的矛盾,找到一个平衡点才是关键。

【每日一MOS】-RAC and Sequences (853652.1)的更多相关文章

  1. 【每日一摩斯】-【序列】-续-RAC and Sequences (853652.1)

    一个简单的sequence有什么可以说的呢?如果再这样认为就大错特错了... 也许以下几点高人们都很清楚,但至少对于我来说,之前是陌生的,或者说是忽略的. 1.CREATE SEQUENCE seq; ...

  2. 【转载】row cache lock

    转自:http://blog.itpub.net/26736162/viewspace-2139754/   定位的办法: --查询row cache lock等待 select event,p1   ...

  3. 【等待事件】等待事件系列(5.1)--Enqueue(队列等待)

    [等待事件]等待事件系列(5.1)--Enqueue(队列等待)   1  BLOG文档结构图   2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ...

  4. [每日电路图] 10、两种MOS管的典型开关电路

    下图是两种MOS管的典型应用:其中第一种NMOS管为高电平导通,低电平截断,Drain端接后面电路的接地端:第二种为PMOS管典型开关电路,为高电平断开,低电平导通,Drain端接后面电路的VCC端. ...

  5. 【从翻译mos文章】rac数据库,HC_<SID>.dat其他文件Oracle_Home用例下。

    rac数据库.HC_<SID>.dat其他文件Oracle_Home用例下. 参考原始: RAC database HC_<SID>.dat is used by instan ...

  6. Oracle卸载之正确卸载rac数据库的方法(MOS卸载方法)

    一.关闭数据库和资源 1.节点1 [root@node1 bin]# pwd /u01/app/11.2.0/grid/bin [root@node1 bin]# ./crsctl stop crs ...

  7. Linux下手工卸载11.2 RAC(非MOS的deinstall方法)

    思路来自于经典的<How to Proceed From a Failed 10g or 11.1 Oracle Clusterware (CRS) Installation (Doc ID 2 ...

  8. 【翻译自mos文章】在11gR2 rac环境中,文件系统使用率紧张,而且lsof显示有非常多oraagent_oracle.l10 (deleted)

    在11gR2 rac环境中,文件系统使用率紧张.而且lsof显示有非常多oraagent_oracle.l10 (deleted) 參考原文: High Space Usage and "l ...

  9. 【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法

    检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法 来源于: How to Check Whether Oracle Binary/In ...

随机推荐

  1. jprofiler安装和配置

    转:http://www.cnblogs.com/adolfmc/archive/2013/06/09/3129358.html 注意:安装前先用rpm -q jprofiler查询linux上是否已 ...

  2. cf472A Design Tutorial: Learn from Math

    A. Design Tutorial: Learn from Math time limit per test 1 second memory limit per test 256 megabytes ...

  3. HTML标签的offset、client、 scroll和currentStyle属性

    本文来自:http://www.cnblogs.com/quanhai/archive/2010/04/19/1715231.html offsetHeight = borderTopWidth + ...

  4. C# Socket 简易的图片传输

    关于网络的数据传输我就是个小白,所以今天学习一下简易的Socket图片传输. 客户端和服务器的连接咱们上次已经学过了,咱们先从简易的文件传输入手.下面开始代码分析了. Server.cs using ...

  5. Oracle Golden Gate - 概念和机制 (ogg)

    Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉.变换.投递. OGG支持的异构环境有: OGG的特性: 对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制 ...

  6. cover letter issues

    All cover letters should: Explain why you are sending a resume. Don't send a resume without a cover ...

  7. 求一组数字序列的分布情况(java)

    最近需要做一个正态分布的函数图像所以要处理一段double序列 写了这个算法  先上效果图: 核心思想: 1先根据步长计算每一个区间 2循环进行判断序列中每个数属于哪个区间 3用一个数组来保存每一个区 ...

  8. hbase 二级索引创建

    在单机上运行hbase 二级索引: import java.io.IOException; import java.util.HashMap; import java.util.Map; import ...

  9. python基础之 list和 tuple(元组)

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  10. word保存时标题变成黑框(mac版本)

    参考:http://blog.sina.com.cn/s/blog_686020310101i2zu.html 参考文档中说的时windows版本的word,跟我mac处理方式有一些不同: word版 ...