序列有四种组合:

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. 如何提升app开发效率

    无论在什么行业,用户永远都是不可替代的“上帝”,一切的服务,开发都得按照用户的意愿来进行.然而在app开发领域中,专业的技术操作却并不像逛街淘货一样清晰可见,更多的需要app开发人员一行行代码敲出来, ...

  2. HTML5 canvas translate() 方法

    HTML5 canvas translate() 方法 translate() 方法重新映射画布上的 (0,0) 位置.

  3. jquery 绑定动态元素

    以一个小例子来简单说明下情况 ? 1 2 3 4 5 6 7 8  <script src="jquery-1.11.0.min.js"></script> ...

  4. Ubuntu学习-简单指令

    查看是否安装了中文支持 locale -a 如果有 zh_CN.utf8 则表示系统已经安装了中文locale,如果没有则需要安装相应的软件包. 软件管理 apt ( Advanced Packagi ...

  5. JS~delegate与live

    在jquery里有两个方法可以用来绑定自动追加出来的DOM对象,它们是live和delegate,事实上,这两个方法是bind方法的一个变体,在对于固定DOM对象时,我们通常使用bind就可以了,而对 ...

  6. [Android] 停止、恢复 背影音乐的播放

    在执行录音操作时,我们希望可以将酷狗等后台播放的音乐停掉,在录音完成后再恢复播放,可以使用以下代码: /**@param bMute 值为true时为关闭背景音乐.*/ @TargetApi(Buil ...

  7. 图像处理中像素点的问题:unsigned char 和 char

    以前在做图像处理的时候,一直不太在意这个问题,对图像每个像素点的灰度值,总是认为char也可,unsigned char也可.尽管它们都是8位,但是表示的数的范围却不相同:char: -128~127 ...

  8. LR实战之Discuz开源论坛——登录脚本

    脚本业务流:访问Discuz论坛首页——登录论坛——退出论坛.本次使用LoadRunner11版本. 一.录制脚本注意 1.确保Discuz论坛能在服务器运行正常. 2.录制前先试访问Discuz论坛 ...

  9. webapi单元测试时出现的ConfigurationManager.ConnectionStrings为空错误

    这个是读取配置文件没读到的问题,解决方法很简单,把webapi的配置文件复制到单元测试项目中,并把名字改为App.config即可. 同时 ,推荐使用Unit Test Genertor来做测试,这个 ...

  10. js 去掉空格

    写成类的方法格式如下:(str.trim();)<script language="javascript"> String.prototype.trim=functio ...