0

私は SYSID として使用されるオラクルに 1 つのシーケンスを持っています。シーケンスは整然と生成されていません。つまり、番号をスキップしている部分があり、その後継続しています。

以下は私のシーケンスです

CREATE SEQUENCE leaveform_seq 
MINVALUE 1 MAXVALUE 999999999999999999999999999 
INCREMENT BY 1 START WITH 1560
CACHE 20 ORDER NOCYCLE;

シーケンスに代わるものはありますか?

4

3 に答える 3

8

Oracle シーケンスは、マルチユーザー環境で適切に機能し、スケーリングされる保証された一連の一意の番号のジェネレーターです。パフォーマンスとスケーラビリティのトレードオフは、シリーズにギャップがある場合があることです。

このようなギャップが組織にとって本当に重要なユースケースを見つけることは非常にまれです。悲しいことに、人々が彼らについて不必要な熱狂に陥ることはあまりにも一般的ですが.


シーケンスに代わるものはありますか? もちろん、いつでも自由に独自のコードを記述できます。ビジネス ニーズに応じて、非常に単純な場合もあれば、かなり複雑な場合もあります。

心に留めておくべき重要なことは、パフォーマンスとスケーラビリティです。シーケンスを使用しないことを選択すると、必然的に両方のビットが犠牲になります。しかし、独自のシリーズ ジェネレーターを作成すると、実際に問題を解決する機会が得られます。

したがって、その意味を理解し、上司がそのアイデアに完全に同意していることを確認してください.

于 2013-06-18T10:57:41.243 に答える
4

はい、それが彼らの働き方です。シーケンスは、シーケンス値を使用したトランザクションのロールバックが値を使用可能なリストに返さないため、およびシーケンス キャッシングのために、番号のギャップのないリストを提供することが保証されていません。

これは、意味のない ID では問題になりません。

これについては長い議論があります: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:530735152441

于 2013-06-18T10:06:01.910 に答える