/ / Como NÃO reciclar IDs de auto_increment no InnoDB - mysql, innodb, auto-increment

Como NÃO reciclar IDs de auto_increment no InnoDB - mysql, innodb, auto-increment

eu recentemente ler que por causa de como InnoDB recalcula o AUTO_INCREMENT valor quando o servidor for reiniciado, todos os registros na extremidade superior da lista de IDs poderão ter suas IDs reutilizadas.

Normalmente, isso não é um problema, porque quando um usuário é excluído, tudo associado ao ID é excluído de outras tabelas também.

Mas eu estou deliberadamente deixando seus posts no fórum órfãos, rotulados como "Postado por = Usuário # 123 =", para que conversas passadas sejam mantidas. Claramente, se um ID for reutilizado, isso será um problema.

Eu nunca tive esse problema antes porque nãoeram sempre novos usuários suficientes para tornar improvável que um ID fosse reutilizado dessa maneira. No entanto, no meu novo projeto, as inscrições são raras e inativas são frequentes (especialmente porque as contas "Open Alpha" duram apenas três dias como pré-visualização), e essa reutilização de ID já ocorreu três para três agora.

Eu "consertei" o problema salvando o valor correto para AUTO_INCREMENT em outro lugar e usando isso em vez de confiar no valor interno. Existe uma maneira real de o InnoDB lembrar o último valor real?

Respostas:

1 para resposta № 1

Os documentos 5.5 sugerem armazenar o valor de incremento automático em outro lugar, como você já tem.

Uma solução alternativa seria emular uma SEQUENCE para que você não use o incremento automático na própria tabela. discutido em SO antes e novamente. o Blog do MYSQL Performance menciona.

Ainda outros dados do MySQL atrapalham que outros RDBMS não têm ...