2009-08-14 10 views
1

奇妙なビジネス要件を満たすために、私は自分のシーケンスのようなカウンターを実装する必要があります。私はこれを最初の方法で明らかにするつもりですが、Oracleがシーケンスを実装する方法についてもう少し理解したいと思います。たとえば、ロックの代わりにラッチを使用できますか?Oracle:シーケンスはどのように実装されていますか?

私はウェブ上でこれについて多くを見つけることができませんでした。したがって、あなたの個人的な経験からの洞察と洞察を歓迎します!

(10g RACの、それが重要な場合)

+0

私はあなたが単にシーケンスを使用することはできないという奇妙なビジネス要件を知りたいのですが... –

答えて

3

私はOracleはシーケンスの内部の仕組みを公開しているとは思いませんが、ジョナサン・ルイスは、彼らがhereをどのように動作するかのいくつかの詳細な分析を書いています。そのドキュメントから:

メカニズムが オラクルの内部にあるので、それは非常に効率的であると は、伝統的な エンドユーザーコード化されて表示され、通常のロック競合 バイパス「配列のテーブル シーケンスオブジェクトを」私に次の 利用可能な番号を教えてください。そして、もう一度聞いたことがありますか? ;これらは nextvalおよびcurrvalはそれぞれ となります。

のnextval要求 は、セッションのローカル メモリへ 次の使用可能なシーケンス値と コピーし、それを得るために、グローバル・キャッシュに行きます。

1

自分のシーケンスを実装する必要がある理由を説明する必要があると思います。解決しようとしている問題がわかっている場合は、自分のカスタムシーケンスを実行する必要がないように答えを出すことができます。

関連する問題