Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

auto incremento primário deixando lacunas na contagem


Isso é por design e sempre acontecerá.

Por quê?

Vamos pegar 2 transações sobrepostas que estão fazendo INSERTs
  • A transação 1 faz um INSERT, obtém o valor (digamos 42), faz mais trabalho
  • A transação 2 faz um INSERT, obtém o valor 43, faz mais trabalho

Então
  • A transação 1 falha. Rola para trás. 42 permanece sem uso
  • A transação 2 é concluída com 43

Se fossem garantidos valores consecutivos, todas as transações teriam que acontecer uma após a outra. Não muito escalável.

Consulte também Os registros inseridos sempre recebem identidade contígua Valores (SQL Server, mas o mesmo princípio se aplica)