Optimiere mySql für eine schnellere Spalte zum Hinzufügen einer neuen Tabelle
Ich habe eine Tabelle, die hat 170,002,225 Zeilen mit 35 Spalten und zwei Indizes. Ich möchte eine Spalte hinzufügen. Der Befehl alter table dauerte etwa 10 Stunden. Weder der Prozessor schien damit beschäftigt, während dieser Zeit, noch gab es eine übermäßige E /a wartet. Dies ist auf ein 4-Wege-high-performance-box mit Tonnen von Speicher.
Ist das das beste was ich tun kann? Gibt es etwas, was ich mir ansehen kann, um zu optimieren die Spalte hinzufügen in der tuning-der db?
InformationsquelleAutor der Frage Andrew | 2011-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stand ich vor einer sehr ähnlichen situation in der Vergangenheit, und ich die Leistung verbessern, den Betrieb in dieser Weise :
INSERT INTO new_table (column1,..columnN) SELECT (column1,..columnN) FROM current_table;
InformationsquelleAutor der Antwort RRUZ
ALTER TABLE
in MySQL ist eigentlich Los, um erstellen Sie eine neue Tabelle mit den neuen schema -, dann re-INSERT
alle Daten und löschen Sie die alte Tabelle. Sie könnten sparen Sie einige Zeit durch die Erstellung der neuen Tabelle, die Daten laden und dann die Umbenennung der Tabelle.Von "High Performance MySQL-Buch" (die percona Jungs):
InformationsquelleAutor der Antwort FoneyOp
Vielleicht können Sie entfernen Sie den index, vor dem ändern der Tabelle, weil das, was ist, nehmen die meisten der Zeit zu bauen ist der index?
InformationsquelleAutor der Antwort Bytemain
Gut, ich würde empfehlen, mit neuesten Percona MySQL-plus baut seit es den folgenden Hinweis im MySQL-Handbuch
Können Sie tun
ALTER TABLE DISABLE KEYS
ersten, dann fügen Sie eine Spalte und dannALTER TABLE ENABLE KEYS
. Ich sehe nicht alles kann hier gemacht werden.BTW, kannst du nicht gehen, MongoDB? Es muss nicht alles neu erstellen, wenn Sie Spalte hinzufügen.
InformationsquelleAutor der Antwort Vladislav Rastrusny