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

カウントにギャップを残してプライマリを自動インクリメント

    これは仕様によるものであり、常に発生します。

    なぜですか?

    INSERTを実行している2つの重複するトランザクションを考えてみましょう

    • トランザクション1はINSERTを実行し、値(たとえば、42)を取得し、さらに多くの作業を実行します
    • トランザクション2はINSERTを実行し、値43を取得し、より多くの作業を実行します

    次に

    • トランザクション1は失敗します。ロールバックします。 42は未使用のままです
    • トランザクション2は43で完了します

    連続した値が保証されている場合、すべてのトランザクションは次々に発生する必要があります。あまりスケーラブルではありません。

    挿入されたレコードは常に連続したIDを受け取るようにするも参照してください値 (SQL Serverですが、同じ原則が適用されます)



    1. ニージャークパフォーマンスチューニング:一時テーブルの誤った使用

    2. T-SQLのバグ、落とし穴、およびベストプラクティス–結合

    3. Oracleで一括収集して即時実行

    4. UbuntuにMySQLをインストールして設定する方法