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

Por que o incremento automático do MySQL aumenta em inserções com falha?


InnoDB é um mecanismo transacional.

Isso significa que no seguinte cenário:
  1. Session A insere o registro 1
  2. Session B insere o registro 2
  3. Session A reverte

, existe a possibilidade de uma lacuna ou session B bloquearia até a session A confirmado ou revertido.

InnoDB designers (como a maioria dos outros designers de mecanismos transacionais) optaram por permitir lacunas.

Da documentação> :

Ao acessar o contador de incremento automático, InnoDB usa um AUTO-INC especial em nível de tabela lock que mantém até o final do SQL atual declaração, não até o final da transação. A estratégia especial de liberação de bloqueio foi introduzida para melhorar a simultaneidade de inserções em uma tabela contendo um AUTO_INCREMENT coluna



InnoDB usa o contador de incremento automático na memória enquanto o servidor estiver em execução. Quando o servidor é parado e reiniciado, InnoDB reinicializa o contador de cada tabela para o primeiro INSERT à mesa, conforme descrito anteriormente.

Se você tem medo do id coluna em volta, torne-a BIGINT (8 bytes de comprimento).