Mysql
 sql >> Base de données >  >> RDS >> Mysql

incrémentation automatique primaire laissant des lacunes dans le comptage

C'est intentionnel et cela arrivera toujours.

Pourquoi ?

Prenons 2 transactions qui se chevauchent qui font des INSERTs

  • La transaction 1 effectue un INSERT, obtient la valeur (disons 42), effectue plus de travail
  • La transaction 2 effectue un INSERT, obtient la valeur 43, effectue davantage de travail

Alors

  • La transaction 1 échoue. Roule en arrière. 42 séjours inutilisés
  • Transaction 2 terminée avec 43 

Si des valeurs consécutives étaient garanties, chaque transaction devrait se produire l'une après l'autre. Pas très évolutif.

Voir également Les enregistrements insérés reçoivent-ils toujours une identité contiguë Valeurs (SQL Server mais le même principe s'applique)