Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Auto-Increment-Primary hinterlässt Lücken beim Zählen

Dies ist beabsichtigt und wird immer passieren.

Warum?

Nehmen wir 2 überlappende Transaktionen, die INSERTs ausführen

  • Transaktion 1 führt ein INSERT durch, erhält den Wert (sagen wir 42) und erledigt mehr Arbeit
  • Transaktion 2 führt ein INSERT durch, erhält den Wert 43, erledigt mehr Arbeit

Dann

  • Transaktion 1 schlägt fehl. Rollt zurück. 42 bleibt ungenutzt
  • Transaktion 2 wird mit 43 abgeschlossen

Wenn fortlaufende Werte garantiert wären, müsste jede Transaktion nacheinander erfolgen. Nicht sehr skalierbar.

Siehe auch Do Inserted Records Always Receive Contiguous Identity Werte (SQL Server, aber es gilt das gleiche Prinzip)