InnoDB
est un moteur transactionnel.
Cela signifie que dans le scénario suivant :
Session A
insère l'enregistrement1
Session B
insère l'enregistrement2
Session A
recule
, il y a soit une possibilité d'écart soit une session B
se verrouillerait jusqu'à la session A
validé ou annulé.
InnoDB
les concepteurs (comme la plupart des autres concepteurs de moteurs transactionnels) ont choisi d'autoriser des espaces.
À partir de la documentation :
Lors de l'accès au compteur auto-incrémenté,
InnoDB
utilise unAUTO-INC
spécial au niveau de la table verrou qu'il conserve jusqu'à la fin duSQL
courant relevé, et non jusqu'à la fin de la transaction. La stratégie spéciale de déverrouillage a été introduite pour améliorer la simultanéité des insertions dans une table contenant unAUTO_INCREMENT
colonne…
InnoDB
utilise le compteur d'auto-incrémentation en mémoire tant que le serveur fonctionne. Lorsque le serveur est arrêté et redémarré,InnoDB
réinitialise le compteur de chaque table pour le premierINSERT
à la table, comme décrit précédemment.
Si vous avez peur de l'id
la colonne s'enroule autour, rendez-la BIGINT
(8 octets de long).