1

mysql AUTO_INCREMENT docでは、挿入時に新しい ID を選択する方法についての詳細な説明が見つかりませんでした。

「最大数」のキーをキャッシュしますか、それとも使用されていない最小の ID を見つけますか? ソースコードへの参照はありますか?

編集:

テストしましたが、削除されたアイテムの ID を再利用しないようですが、よくわかりません。注文のタイムスタンプとして id を使用したいので、そうであると 100% 確信している必要があります。つまり、このロジックの説明には、ソース コードまたは mysql doc のいずれかで、信頼できる参照が必要です。

4

2 に答える 2

1

使用されていない最小の番号は選択されません。割り当てた最後のIDまで常に1ずつ増加します。これは一定時間の操作になります。(使用されていない最小の数値を選択するのとは対照的に、線形時間*になります)。

たとえば、10行を挿入した場合、5行目を削除します。次に挿入される行は、5ではなく11のIDを取得します。

この操作は、削除時にペナルティを受け入れることにより、(挿入時に)一定時間になるように非常に簡単に最適化できます。ただし、それはMySQLが行うことではありません。

于 2012-12-10T12:50:22.070 に答える
0

はい、それがauto_increment仕組みです。

  • 新しい行ごとに値が増加します

  • 値は一意であり、重複することはできません

  • 行が削除された場合、auto_incrementその行の列は再割り当てされません。

  • 最後に挿入された行のauto_increment値には mySQL 関数を使用してアクセスできますLAST_INSERT_ID()が、同じデータベース接続で挿入クエリの直後に呼び出す必要があります。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2012-12-10T13:04:51.330 に答える