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

MariaDB - INNODB pulando a sequência numérica ao criar registros incrementais - por quê?


O mecanismo auto_increment é necessário para gerar exclusivos valores, que são maiores do que qualquer valor gerado anteriormente. Não garante a geração consecutiva valores.

Há alguma discussão sobre isso aqui:https://bugs.mysql.com/bug. php?id=57643

Há pouca importância em gerar valores consecutivos com fidelidade, pois qualquer valor pode ser "perdido" por outros motivos:
  • Seu INSERT falha, por exemplo, por violar uma restrição como UNIQUE KEY ou FOREIGN KEY.
  • Você reverte a transação para INSERT.
  • Você tem sucesso e se compromete, mas depois a linha é DELETE por você ou por outra sessão.

Os valores de auto-inc não são retornados a nenhum tipo de fila, porque outras sessões simultâneas podem ter gerado outros valores de id nesse meio tempo. Não vale a pena que o InnoDB mantenha um pool de valores de id não alocados, porque esse pool pode se tornar enorme e um desperdício.

Além disso, pode ser apropriado "perder" um valor de ID, ou então alguém pensaria que a linha que pretendia DELETE de alguma forma voltou.