自動インクリメント主キーでカウントのギャップが残る場合: データベース パズル
自動インクリメント主キーを持つデータベース テーブルでは、次のことが期待されます。キーの値が隙間なく連続的に増加すること。ただし、場合によっては、カウントにギャップが生じる可能性があり、ユーザーはその原因について困惑し、データの整合性について懸念することになります。
この問題は通常、挿入中のエラーによりデータベース トランザクションがロールバックされた場合に発生します。挿入試行中に自動増分キーが割り当てられますが、トランザクションが失敗してロールバックすると、割り当てられたキーは未使用のままになります。その後、新しいトランザクションが挿入を試行すると、次に使用可能な未使用のキーが取得され、シーケンスにギャップが残る可能性があります。
たとえば、最後に正常に挿入された行の ID が 5 であるとします。挿入トランザクションでエラーが発生し、ロールバックすると、割り当てられた ID 6 は未使用のままになります。次に挿入が成功すると、ID 8 が取得され、6 と 7 の間のシーケンスにギャップが生じます。
この現象は、自動インクリメント主キーの設計に固有のものです。スケーラビリティを確保し、トランザクションが相互にブロックされるのを防ぐため、連続した値は保証されません。代わりに、システムでは、トランザクションがロールバックされるたびにシーケンスにギャップが生じる可能性を考慮しています。
この問題に対処するには、次の提案を検討してください。
以上が自動インクリメントの主キーにギャップがある場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。