W MySQL, jak długo trwa „ZMIEŃ TABELĘ… WYŁĄCZ KLUCZE;” ostatnie oświadczenie?


12

Jeśli wyłączysz klucze (zawieszanie indeksowania) w tabeli mysql INNODB, jak długo potrwa to ustawienie?

W przypadku zapytania takiego jak:

ALTER TABLE users DISABLE KEYS;

Czy klucze zostaną ponownie włączone na końcu skryptu? czy trwają, dopóki nie włączysz indeksowania?


To pytanie zasługuje na +1 za pomoc innym w zrozumieniu DISABLE KEYS, ENABLE KEYS i InnoDB.
RolandoMySQLDBA


Odpowiedzi:


7

Dokładna instrukcja (która jest warta przeczytania) sugeruje, że efekt tej instrukcji trwa do momentu wykonania odpowiedniej ALTER TABLE ... ENABLE KEYSinstrukcji.


6

W rzeczywistości ZMIENIĆ TABELĘ ... WYŁĄCZYĆ KLUCZE i ZMIEŃ TABELĘ ... WŁĄCZYĆ KLUCZY nie działają !!!!

Odpowiedziałem na to w 13 lutego 2011 r.

Zrobiłem dodatkowe kopanie i dowiedziałem się od firmy macierzystej InnoDB, InnoBase Oy (zanim otrzymałem 7 z 9 w Oracle Borg), że tak właśnie jest.

Ten link sugeruje jednoczesne wyłączanie kluczy i wyłączanie kluczy obcych. Chociaż myślę, że oba są niepotrzebne, najwyraźniej to działało dla kogoś.

AKTUALIZACJA 2011-07-18 12:35 EDT

To bardzo dobre pytanie, ponieważ ujawnia zło, które pozostało w MySQL. Program mysqldump ślepo upuszcza DISABLE KEYS i ENABLE KEYS wokół tworzenia i ładuje każdą tabelę bez względu na silnik pamięci. Ponieważ DISABLE KEYS i ENABLE KEYS nie działają (w najlepszym przypadku nie mają wpływu) na tabele InnoDB, ponieważ działają poprawnie dla MyISAM, ten nieznany fakt powinien być lepiej udokumentowany przez społeczność MySQL. O tak, MySQL jest w środku Imperium Galaktycznego znanego jako Oracle. Nie będę wstrzymywał się z nadchodzącymi zmianami w dokumentacji.


3
Złożenie oświadczenia to jedno. Krzyczenie go za pomocą zarówno wielkich, jak i pogrubionych czcionek jest nieco nadmierne i całkowicie niepotrzebne.
John Gardeniers

1
@John: Przepraszam, że jestem zbyt entuzjastyczny. Nie jestem zły na nikogo. ALTER TABLE DISABLE / ENABLE KEYS against InnoDB nie jest dobrze udokumentowane. Oracle też nie będzie poprawiać rzeczy.
RolandoMySQLDBA

@RolandoMySQLDBA czy istnieje jakieś obejście, aby uniknąć umieszczania przez mysqldump DISABLE KEYS i ENABLE KEYS w pliku zrzutu?
pahnin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.