Mysql auto_increment reset SEM índice de reconstrução?

3

Há apenas uma forma de redefinir o valor auto_increment em uma tabela sem reconstruir o índice inteiro. Eu tenho uma tabela com mais de 2 bilhões de linhas que acidentalmente tem um ID inserido perto de 4,2 bilhões. De experiência passada, eu sei que tentar definir o valor auto_increment de volta para o que deveria ser forçará o mysql a reconstruir o índice inteiro, o que provavelmente levaria 24 horas em uma tabela deste tamanho. Para ser honesto, não posso acreditar que isso seja apenas "como" funciona por padrão. Não há absolutamente nenhuma necessidade de reconstruir um índice inteiro da tabela apenas porque você quer mudar este valor.

Tem que haver um caminho. Mas não consigo encontrar um em qualquer lugar. IDÉIAS POR FAVOR!

(Reconstruindo índices, sei que o myisamchk pode fazer isso 100 vezes mais rápido que o processo mysql em si. Mas não posso dizer ao mysql para usar o myisamchk em vez de ele mesmo para reconstruir o índice depois de alterar o ID de incremento automático. seja um caminho !!!)

    
por Sean 04.03.2010 / 14:20

1 resposta

1

Com base neste artigo , parece que você pode reconfigurar a ID acidental para um valor adequado ou soltar a linha e, em seguida, reiniciar o servidor, pois o valor de incremento automático das tabelas innodb é mantido na memória. Eu não tentei isso antes, mas pode funcionar.

    
por 04.04.2011 / 20:31