我是数据库新手。我一直在读甲骨文里的序列。我逐渐了解到.I序列中的order子句应该引用这一段
指定顺序,以确保按请求顺序生成序列号。如果您使用序列号作为时间戳,则此子句非常有用。对于用于生成主键的序列来说,保证顺序通常并不重要。 如果您将Oracle数据库与真正的应用程序集群一起使用,则需要订购才能保证有序生成。如果使用独占模式,则始终按顺序生成序列号。
我一点也不明白。链接到网站是一个链接!有人能帮我吗?原谅任何语法错误
发布于 2019-08-23 05:08:12
序列中的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中的时间顺序,则需要它。
缓存:,如果您按顺序将缓存指定为20,那么oracle将在一堆中获取20个值,并将其值放在SGA中,并且数据字典只更新一次。因此,如果您想使用35个序列值,那么当数据字典被更新时,只有2次,在NO CACHE情况下,数据字典中的35个更新将提高性能。缓存用于提高序列的性能。但在数据库关闭时,也会丢失未使用的缓冲序列值。
希望,它会有用的。
干杯!!
发布于 2019-08-23 05:08:55
用于保证每个记录得到唯一值的序列。如果您指定ORDER属性,那么它还保证在较早的时间点创建的记录的序列号将低于后来创建的记录。在大多数情况下,不需要订货。
https://stackoverflow.com/questions/57620096
复制相似问题