Se você desabilitar as chaves (suspendendo a indexação) em uma tabela mysql INNODB, quanto tempo dura essa configuração?
Para uma consulta como:
ALTER TABLE users DISABLE KEYS;
As chaves são reativadas no final do script? ou eles duram até você ativar novamente a indexação explicitamente?
mysql
database
database-administration
indexing
Daniel Beardsley
fonte
fonte
Respostas:
O Manual Fino (que vale a pena ler) sugere que o efeito dessa declaração dura até que uma
ALTER TABLE ... ENABLE KEYS
declaração correspondente seja executada.fonte
Na realidade, ALTER TABLE ... DISABLE KEYS e ALTER TABLE ... ENABLE KEYS não funcionam !!!!
Eu resolvi isso em 13 de fevereiro de 2011.
Fiz algumas escavações adicionais e descobri na empresa mãe do InnoDB, a InnoBase Oy (antes de fazer 7 de 9 no Oracle Borg), que esse é realmente o caso.
Este link sugere executar DISABLE KEYS e desativar chaves estrangeiras juntas. Embora eu pense que ambos são desnecessários, isso aparentemente funcionou para alguém.
UPDATE 2011-07-18 12:35 EDT
Essa é uma pergunta muito boa, porque expõe um mal que sobrou no MySQL. O programa mysqldump descarta cegamente DISABLE KEYS e ENABLE KEYS ao redor da criação e carrega sobre todas as tabelas sem levar em consideração o mecanismo de armazenamento. Como DISABLE KEYS e ENABLE KEYS não funcionam (na melhor das hipóteses, não tem efeito) nas tabelas do InnoDB, pois funciona corretamente para o MyISAM, esse fato desconhecido deve ser melhor documentado pela comunidade MySQL. Sim, o MySQL está no meio do Império Galáctico, conhecido como Oracle. Não vou prender a respiração com as alterações de documentação que estão por vir.
fonte