sql >> データベース >  >> RDS >> Oracle

OracleSequencenextvalは数を前後にジャンプしています

    データベースがRAC(Real Application Clusters)を実行していることを確認します。それが事実であり、すべてのデフォルト設定でシーケンスを作成すると仮定すると、それは予想される動作です。

    デフォルト設定では、20個の値がキャッシュされます。デフォルトでは、RACクラスター内の各ノードには個別のキャッシュがあります。 2つのノードAとBを持つクラスターがあると仮定すると、初めてnextval がAでリクエストされた場合、Aは値1〜20をキャッシュし、値1を返します。nextvalの次のリクエストの場合 がBで行われると、Bは値21〜40をキャッシュし、値21を返します。そこから取得する値は、接続が実行されているノードによって異なります。

    通常、これは問題にはなりません。シーケンスは一意の番号を生成します。通常、番号は連続している必要はありません。シーケンスで生成された値による順序付けなどを行って「最初」または「最後」の行を決定するために、値を順番に返す必要がある場合は、ORDERを使用できます。 シーケンスを作成して、値を順番に返すように強制する場合の句。ただし、返される値を同期するためにノード間で実行する必要のある通信量が増えるため、RACデータベースのパフォーマンスに悪影響を及ぼします。 「最初」または「最後」の行を決定する必要がある場合は、通常、dateを追加することをお勧めします。 またはtimestamp 主キーが順番に生成されると想定するのではなく、テーブルに列を並べて並べ替えます。



    1. Oracleデータベースで夏時間を処理する方法

    2. スプリットブレイン症候群からGaleraクラスターまたはMySQLレプリケーションを回復する方法

    3. MySQL InnoDBの挿入が非常に遅いのはなぜですか?

    4. GTIDモードでMySQLの開始時間が遅いですか?バイナリログファイルのサイズが問題になる可能性があります