为了满足一些奇怪的业务需求,我将不得不实现我自己的类似序列的计数器。我将以明显的方式对此进行第一次剪辑,但我想更多地了解 Oracle 如何实现序列。例如,他们可以使用闩锁代替锁吗?
我在网上找不到太多关于此的内容,因此欢迎提供文档指针以及您个人经验的见解!
(10g RAC,如果重要的话)
为了满足一些奇怪的业务需求,我将不得不实现我自己的类似序列的计数器。我将以明显的方式对此进行第一次剪辑,但我想更多地了解 Oracle 如何实现序列。例如,他们可以使用闩锁代替锁吗?
我在网上找不到太多关于此的内容,因此欢迎提供文档指针以及您个人经验的见解!
(10g RAC,如果重要的话)
我不认为 Oracle 已经发布了序列的内部工作原理,但 Jonathan Lewis 已经写了一些关于它们如何工作的详细分析。从该文件中:
因为该机制是 Oracle 内部的,所以它非常有效,并且绕过了传统的最终用户编码的“序列表和序列对象”出现的正常锁定争用:“给我下一个可用数字”和“再次提醒我那是什么” '; 这些分别是 nextval和currval调用。
nextval请求进入全局缓存以获取下一个可用序列值并将其复制到会话的本地内存中。
你想要/需要一个无缝的数字序列吗?阅读:http ://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4343369880986
我认为您需要解释为什么需要实现自己的序列。如果我们知道您要解决的问题,我们可能会给您一个答案,这样您就不必进行自己的自定义序列。