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

MariaDB-インクリメンタルレコードの作成中に番号シーケンスをスキップするINNODB-なぜですか?

    一意のを生成するには、auto_incrementメカニズムが必要です。 以前に生成したどの値よりも大きい値。 連続を生成することを保証するものではありません 値。

    ここでそれについていくつかの議論があります:https://bugs.mysql.com/bug。 php?id =57643

    他の理由で値が「失われる」可能性があるため、連続する値を忠実に生成することはほとんど重要ではありません。

    • たとえば、UNIQUEKEYやFOREIGNKEYなどの制約に違反しているため、INSERTが失敗します。
    • INSERTのトランザクションをロールバックします。
    • 成功してコミットしますが、後でその行はあなたまたは別のセッションによって削除されます。

    Auto-inc値は、他の同時セッションがその間にさらにid値を生成した可能性があるため、どの種類のキューにも返されません。未割り当てのID値のプールを維持することは、InnoDBの価値がありません。そのプールは、巨大で無駄になる可能性があるためです。

    また、ID値を「失う」ことが適切な場合もあります。そうしないと、誰かがDELETEしようとした行が何らかの理由で戻ってきたと思うでしょう。



    1. SQLAlchemyで、2つの異なる.pyファイル間でForeignKey関係を作成するにはどうすればよいですか?

    2. オンラインアップグレードの進捗状況

    3. PHPでmysqlデータベースからグラフとチャートを生成する方法

    4. uft8_general_ciを使用したMySQL検索では、全文に対して大文字と小文字が区別されますか?