CPU ist selten der eigentliche Engpass. Normalerweise handelt es sich dabei um die Festplatte, wobei der für den Pufferpool verfügbare Speicherplatz auch eine Einschränkung ist.
Das Problem ist, dass die erforderlichen Ressourcen ALTER TABLE
normalerweise nicht Ihr eigentliches Problem sind. Es ist die Tatsache, dass die Tabelle während des Vorgangs wahrscheinlich gesperrt wird.
Es gibt keine Möglichkeit, Abfragen in MySQL zu priorisieren, aber wenn dies der Fall wäre, würde dies wahrscheinlich nur Ihre Agonie verlängern, da die Sperre auf Tabellenebene nur länger bestehen bleibt.
Versuche dies:
ALTER TABLE t1 ADD COLUMN c2 BIGINT UNSIGNED NOT NULL AFTER c1, LOCK=NONE, ALGORITHM=INPLACE;
Wenn der Server dies nicht zulässt - was das Problem lösen sollte -, sollte die Fehlermeldung den Grund dafür angeben.
Wenn der Grund auf Fremdschlüssel zurückzuführen ist und die Fremdschlüsselintegrität durch Ihre ALTER
Abfrage nicht beeinträchtigt wird, können Sie die Prüfungen deaktivieren, die Sie daran hindern, eine In-Place-Änderung ohne Sperren durchzuführen.
SET @@FOREIGN_KEY_CHECKS = 0; -- before ALTER SET @@FOREIGN_KEY_CHECKS = 1; -- after ALTER
Dadurch werden die Fremdschlüsseleinschränkungen für die Tabelle nicht deaktiviert. Es werden lediglich alle von Ihrer aktuellen Verbindung ausgeführten Abfragen von der Notwendigkeit ausgenommen, Maßnahmen zu ergreifen, um Verletzungen der relationalen Integrität zu vermeiden. Solange Sie nichts tun, um die relationale Integrität zu stören, ist dies eine sichere Strategie, aber nur, wenn Sie sie brauchen.
https://dev.mysql.com/doc/refman/5.7/de/alter-table.html