为了满足一些奇怪的业务需求,我将不得不实现自己的序列式计数器。我将以明显的方式对此进行第一次切割,但我想更多地了解Oracle如何实现序列。例如,他们可以使用锁存器而不是锁吗?
我一直无法在网上找到这方面的内容,所以欢迎指点文档和个人经历的见解!
(10g RAC,如果重要的话)
答案 0 :(得分:4)
答案 1 :(得分:3)
我不认为甲骨文公布了序列的内部运作,但乔纳森刘易斯已经写了一些关于它们如何运作的详细分析here。从该文件:
因为机制是内部的 Oracle非常高效 绕过正常的锁定争用 与传统相似 最终用户编码的'序列表a 序列对象:'给我下一个 可用号码'和'提醒我什么 那又是';这些是 nextval 和 currval 来电 分别。
nextval 请求 转到全局缓存来获取 下一个可用的序列值和 将其复制到会话的本地 存储器中。
答案 2 :(得分:2)
答案 3 :(得分:1)
我认为您需要解释为什么需要实现自己的序列。如果我们知道您要解决的问题,我们可以给您一个答案,这样您就不必自己做自定义序列了。