序列有四种组合:

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. html 知识

    <pre name="code" class="python"><pre name="code" class=" ...

  2. cf478C Table Decorations

    C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. 哈希表原理及hashmap简单实现

    哈希表也叫做散列表.在各种语言中都有hashmap的实现.其最突出的优点是查找和插入以及删除具有常数的时间复杂度 我们可以把哈希表理解为数组+链表 数组具有常数复杂度的查找,为什么呢,因为数组是在内存 ...

  4. Red and Black(BFS or DFS) 分类: dfs bfs 2015-07-05 22:52 2人阅读 评论(0) 收藏

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

  5. Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区

    Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区 Python-memcached的基本使用 发表于3年前(2010-12-04 00:02)   阅读(9 ...

  6. LD1-M(简单图的判定+构造,Havel定理)

    题目链接 /* *题目大意: *给出一个图的每个点的度的序列,求能否构成一个简单图,如果能构出简单图,则输出图的邻接矩阵; * *算法思想: *Havel定理的应用; *给定一个非负整数序列{dn}, ...

  7. HTML5 Canvas绘图系列之一:圆弧等基础图形的实现

    之前的一个微信项目已经要结项了,最近整理一下项目中使用较多的canvas画图方面的知识吧,打算写个3,4篇的样子.本篇主要介绍基础操作和弧线画法. 之后再写一下趋势图,直方图,文本图像处理的. 言归正 ...

  8. VS2015 MVC5项目部署

    刚看到一个年初的一个帖子说VS2015新建的MVC5项目部署后报错,自己捣鼓了一下,发现是Roslyn编译器的错误,简单处理后运行成功,分享如下: 新建一个MVC5的项目,保持不要动,执行以下几个步骤 ...

  9. 使用Comparable接口的小例子

    代码: public class Student implements Comparable<Student> { private int id; private String name; ...

  10. 关于MAC的pkg和mpkg的分别

    程序制作完毕后,在mac下通常的方法是要制作一个pkg的安装包,可是你会发现pkg和mpkg的文件出现的比較多,笔者也是经过了一定的试验和尝试,才了解到,pkg是单个文件的pkg,而mpkg事实上是多 ...