Oracle:如何实现序列?

时间:2009-08-14 09:16:42

标签: oracle sequences internals oracleinternals

为了满足一些奇怪的业务需求,我将不得不实现自己的序列式计数器。我将以明显的方式对此进行第一次切割,但我想更多地了解Oracle如何实现序列。例如,他们可以使用锁存器而不是锁吗?

我一直无法在网上找到这方面的内容,所以欢迎指点文档和个人经历的见解!

(10g RAC,如果重要的话)

4 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

我不认为甲骨文公布了序列的内部运作,但乔纳森刘易斯已经写了一些关于它们如何运作的详细分析here。从该文件:

  

因为机制是内部的   Oracle非常高效   绕过正常的锁定争用   与传统相似   最终用户编码的'序列表a   序列对象:'给我下一个   可用号码'和'提醒我什么   那又是';这些是    nextval currval 来电   分别。

     

nextval 请求   转到全局缓存来获取   下一个可用的序列值和   将其复制到会话的本地   存储器中。

答案 2 :(得分:2)

你想要/需要无间隙数字序列吗?阅读:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4343369880986

答案 3 :(得分:1)

我认为您需要解释为什么需要实现自己的序列。如果我们知道您要解决的问题,我们可以给您一个答案,这样您就不必自己做自定义序列了。