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)