/ / Warum mysql Tabelle ändern, immer kopieren, um zu verführen? - mysql, Leistung, Speicher, innodb

Warum mysql Tabelle ändern, die immer versucht zu kopieren? - mysql, Leistung, Speicher, innodb

Ich habe innodb Tabelle in MySQL mit weniger als 2Millionen Datensätze und Daten + Indexgröße um 1,5 GB Ich muss alter Tabelle tun, um eine Reihe der Tabelle hinzuzufügen. Wann immer ich tue alter table mysql mache immer Kopie zu Versuchbar. Datenbank-Rechner hat 100 GB RAM, also erwarte ich, dass alter-Tabelle im Speicher ausgeführt werden soll. Ich habe gesetzt:

tmp_table_size = 10G
max_heap_table_size = 10G
sort_buffer_size = 10G
innodb_buffer_pool_size=50G

Aber das hilft nicht. Wie kann ich mysql so konfigurieren, dass das Kopieren nicht zu einem Versuch führt?

Antworten:

2 für die Antwort № 1

MySQL führt nicht durch ALTER TABLE im Speicher auf jeden Fall. Das Hinzufügen einer neuen Spalte zu einer Tabelle erfordert das Erstellen einer neuen Tabelle (mit dem neuen Schema), das Kopieren aller Zeilen von der alten Tabelle in die neue Tabelle und das automatische Ersetzen der alten und der neuen Tabelle. Abhängig von der MySQL Version, einige Arten von ALTER TABLEB. das Hinzufügen neuer Indizes, kann möglicherweise "online" erfolgen, während andere Operationen während der Operation nicht blockiert werden. Dies geschieht jedoch immer noch "auf Diskette" bezüglich Ihrer Frage.