Com o MySQL, quanto tempo dura uma instrução “ALTER TABLE… DISABLE KEYS;”?

10

Se você desabilitar as chaves (suspendendo a indexação) em uma tabela INNODB do mysql, 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 duram até que você volte explicitamente a indexar?

    
por Daniel Beardsley 17.07.2011 / 03:56

2 respostas

5

O Fine Manual (que vale a pena ser lido) sugere que o O efeito dessa declaração dura até que uma instrução ALTER TABLE ... ENABLE KEYS correspondente seja executada.

    
por 16.07.2011 / 23:17
5

Na realidade, ALTER TABLE ... DESABILITAMOS TECLAS e ALTER TABLE ... HABILITAR TECLAS não funcionam !!!!

Abordei isso em 13 de fevereiro de 2011.

Fiz algumas pesquisas adicionais e descobri da empresa-mãe do InnoDB, a InnoBase Oy (antes de ser feita 7 de 9 no Oracle Borg) , que este é realmente o caso.

Este link sugere a ativação de TECLAS DE DESABILITAR e a desativação de chaves estrangeiras. Embora eu ache que ambos são desnecessários, isso aparentemente funcionou para alguém.

ATUALIZAÇÃO 2011-07-18 12:35 EDT

Esta é uma pergunta muito boa porque expõe um mal que sobrou no MySQL. O programa mysqldump deixa cegamente as TECLAS DISABLE e ENABLE KEYS em torno da criação e carrega sobre cada tabela sem considerar o mecanismo de armazenamento. Como as TECLAS DESABILITADAS e as TECLAS ATIVAS não funcionam (no melhor dos casos não tem efeito) nas tabelas InnoDB, uma vez que elas funcionam adequadamente para o MyISAM, este fato desconhecido deve ser melhor documentado pela comunidade MySQL. Ah sim, o MySQL está no meio do Império Galáctico conhecido como Oracle. Eu não vou segurar minha respiração sobre as mudanças na documentação que estão por vir.

    
por 17.07.2011 / 22:15