Mysql
 sql >> Database >  >> RDS >> Mysql

auto incrementa primari lasciando spazi vuoti nel conteggio

Questo è di progettazione e accadrà sempre.

Perché?

Prendiamo 2 transazioni sovrapposte che stanno facendo INSERT

  • La transazione 1 esegue un INSERT, ottiene il valore (diciamo 42), fa più lavoro
  • La transazione 2 esegue un INSERT, ottiene il valore 43, fa più lavoro

Allora

  • La transazione 1 non riesce. Torna indietro. 42 rimane inutilizzato
  • La transazione 2 viene completata con 43

Se fossero garantiti valori consecutivi, ogni transazione dovrebbe avvenire una dopo l'altra. Non molto scalabile.

Vedi anche I record inseriti ricevono sempre un'identità contigua Valori (SQL Server ma si applica lo stesso principio)