【问题标题】:Why should i use cache and order in sequence in oracle?为什么我应该在oracle中按顺序使用缓存和顺序?
【发布时间】:2019-08-23 04:56:01
【问题描述】:

我是数据库新手。我一直在阅读有关 oracle 中的序列的信息。我是按顺序知道 order 子句的。我应该引用该段

指定 ORDER 以保证按请求的顺序生成序列号。如果您将序列号用作时间戳,则此子句很有用。对于用于生成主键的序列,保证顺序通常并不重要。

如果您将 Oracle 数据库与 Real Application Clusters 一起使用,则只有在保证有序生成时才需要 ORDER。如果你使用独占模式,序列号总是按顺序生成

我对此一无所知。该网站的链接是 a link! 有人可以帮帮我吗? 请原谅任何语法错误

【问题讨论】:

    标签: oracle caching sequence cycle


    【解决方案1】:

    ORDER 顺序子句仅在 RAC 中有意义。

    无论哪个实例收到请求,都保证顺序生成。

    如果您不使用ORDER 那么来说明,假设使用cache=20 定义的序列。实例 1 在其缓存中具有序列值 1 到 20。实例 2 在其缓存中具有序列值 21 到 40。通常,并发会话可能会按以下顺序生成序列值:1、2、21、3、22、4、23 和 24。但使用ORDER 子句,此值将是 1、2、3、4、5、6 ,7,..

    因此,文档中提到,如果序列的目的是生成唯一值,则不需要ORDER,但如果在 RAC 中使用序列来定义时间顺序,则需要。

    Cache:如果你指定Cache的顺序为20,那么oracle把20个值放在一堆,放到SGA中,数据字典更新一次。因此,如果您想使用 35 个序列值,那么在更新数据字典时将只有 2 次,以提高针对数据字典中 35 次更新的性能,以防NO CACHE。缓存用于提高序列的性能。但在数据库关闭时,您将丢失未使用的缓冲序列值。

    希望,它会很有用。

    干杯!!

    【讨论】:

    • 感谢回复!!但是您能否在答案以及实例和并发会话中解释“收到请求”?
    • RAC 有多个实例来处理对数据库的请求。意味着生成序列的请求可以由任何实例提供服务。并发会话顾名思义是同时多个会话,并且来自该会话的请求可能由不同的实例提供服务。您必须参考 oracle 文档以了解有关 RAC 的更多信息
    • 缓存是怎么回事?我应该什么时候使用它?
    • 好的,用cache的详细信息更新了答案
    【解决方案2】:

    用于保证每条记录获得唯一值的序列。如果您指定 ORDER 属性,那么它还保证在较早时间点创建的记录的序列号将低于稍后创建的记录。 在大多数情况下,不需要 ORDER。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      相关资源
      最近更新 更多