Con MySQL, per quanto tempo "ALTER TABLE ... DISABLE KEYS;" ultima dichiarazione?


12

Se disabiliti le chiavi (sospensione dell'indicizzazione) su una tabella INNODB mysql, quanto dura questa impostazione?

Per una query come:

ALTER TABLE users DISABLE KEYS;

Le chiavi vengono riattivate alla fine dello script? o durano fino a quando non si riattiva esplicitamente l'indicizzazione?


Questa domanda merita un +1 per aiutare gli altri a realizzare qualcosa su DISABLE KEYS, ENABLE KEYS e InnoDB.
RolandoMySQLDBA,


Risposte:


7

Il Fine Manual (che vale la pena leggere) suggerisce che l'effetto di quell'istruzione dura fino a quando ALTER TABLE ... ENABLE KEYSnon viene eseguita un'istruzione corrispondente .


6

In realtà, ALTER TABLE ... DISABLE KEYS e ALTER TABLE ... ENABLE KEYS non funzionano !!!!

Mi sono rivolto a questo nel 13 febbraio 2011.

Ho fatto qualche ulteriore scavo e ho scoperto dalla società madre di InnoDB, InnoBase Oy (prima di essere fatto 7 su 9 in Oracle Borg), che questo è davvero il caso.

Questo collegamento suggerisce di disabilitare DISATTIVAZIONE e di disabilitare le chiavi esterne insieme. Anche se penso che entrambi non siano necessari, questo apparentemente ha funzionato per qualcuno.

AGGIORNAMENTO 2011-07-18 12:35 EDT

Questa è un'ottima domanda perché espone un male lasciato in MySQL. Il programma mysqldump rilascia alla cieca DISABLE KEYS e ENABLE KEYS intorno alla creazione e carica su ogni tabella senza riguardo al motore di archiviazione. Poiché DISABLE KEYS e ENABLE KEYS non funzionano (nel migliore dei casi non ha alcun effetto) sulle tabelle InnoDB poiché funzionano correttamente per MyISAM, questo fatto sconosciuto dovrebbe essere meglio documentato dalla comunità MySQL. Oh sì, MySQL è nel mezzo dell'Impero Galattico noto come Oracle. Non trarrò fiato dalle modifiche alla documentazione imminenti.


3
Fare una dichiarazione è una cosa. Gridarlo usando entrambi i tappi e il grassetto è un po 'eccessivo e completamente inutile.
John Gardeniers,

1
@Giovanni: mi dispiace di sembrare eccessivamente entusiasta. Non sono arrabbiato con nessuno. ALTER TABLE DISABLE / ENABLE KEYS contro InnoDB non è ben documentato. Oracle non migliorerà neanche le cose.
RolandoMySQLDBA,

@RolandoMySQLDBA esiste qualche soluzione alternativa per evitare che mysqldump inserisca DISABLE KEYS e ENABLE KEYS nel file di dump?
pahnin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.