sql >> Base de Datos >  >> RDS >> Mysql

MariaDB:INNODB se salta la secuencia numérica al crear registros incrementales, ¿por qué?

Se requiere el mecanismo de incremento automático para generar únicos valores, que son mayores que cualquier valor que haya generado previamente. No garantiza generar consecutivos valores.

Hay algo de discusión al respecto aquí:https://bugs.mysql.com/bug. php?id=57643

Poco importa generar valores consecutivos fielmente, porque cualquier valor podría "perderse" por otras razones:

  • Su INSERCIÓN falla, por ejemplo, debido a la violación de una restricción como CLAVE ÚNICA o CLAVE EXTERNA.
  • Revierte la transacción para su INSERCIÓN.
  • Tiene éxito y confirma, pero luego la fila es ELIMINADA por usted u otra sesión.

Los valores de incremento automático no se devuelven a ningún tipo de cola, porque otras sesiones simultáneas podrían haber generado más valores de identificación mientras tanto. No vale la pena que InnoDB mantenga un grupo de valores de identificación no asignados, porque ese grupo podría volverse enorme y un desperdicio.

Además, podría ser apropiado "perder" un valor de ID, o alguien pensaría que la fila que querían ELIMINAR de alguna manera volvió.