Vorwort: Ich habe vor langer Zeit gehört, dass MySQL 8.0 das schnelle Hinzufügen von Spalten unterstützt, wodurch Felder in Sekundenschnelle zu großen Tabellen hinzugefügt werden können. Der Autor verfügt auch lokal über eine 8.0-Umgebung, hat diese jedoch nicht getestet. Sehen wir uns in diesem Artikel an, wie Sie in MySQL 8.0 schnell Spalten hinzufügen. 1. Verstehen Sie die Hintergrundinformationen Das Ändern der Tabellenstruktur ist eine der häufigsten Anforderungen im Geschäftsbetriebsprozess. In der MySQL-Umgebung können Sie die ALTER-Anweisung verwenden, um diese Vorgänge abzuschließen. Die Vorgänge, die diesen ALTER-Anweisungen entsprechen, werden normalerweise auch als DDL-Vorgänge bezeichnet. Im Allgemeinen wirken sich DDL-Operationen an großen Tabellen erheblich auf das Geschäft aus und müssen ausgeführt werden, wenn das Geschäft inaktiv ist oder während Wartungsarbeiten. MySQL 5.7 unterstützt Online-DDL. Die meisten DDLs wirken sich nicht auf das Lesen und Schreiben von Tabellen aus, verbrauchen jedoch dennoch viel Zeit, belegen zusätzlichen Speicherplatz und verursachen Master-Slave-Verzögerungen. Aus diesem Grund bereitet DDL mit großen Tabellen DBAs immer noch Kopfzerbrechen. Ich habe gehört, dass MySQL 8.0 dieses Problem für Datenbankadministratoren löst. Schauen wir uns das also genauer an. Der einfachste Weg, sich über neue Funktionen zu informieren, besteht darin, die offizielle Dokumentation zu konsultieren. Laut der offiziellen Dokumentation wurde die Funktion „Instant Add Column“ in MySQL 8.0.12 eingeführt und vom DBA-Team von Tencent Games beigesteuert. Beachten Sie, dass diese Funktion nur für InnoDB-Tabellen verfügbar ist. 2. Schneller Säulenadditionstest Beim schnellen Hinzufügen von Spalten wird ein Sofortalgorithmus verwendet, sodass beim Hinzufügen einer Spalte nicht die gesamte Tabelle neu erstellt werden muss. Sie müssen nur die grundlegenden Informationen der neuen Spalte in den Tabellenmetadaten aufzeichnen. Das Hinzufügen von ALGORITHM=INSTANT nach der Alter-Anweisung bedeutet, dass der Instant-Algorithmus verwendet wird. Wenn es nicht explizit angegeben ist, werden standardmäßig Operationen verwendet, die den Instant-Algorithmus unterstützen. Wenn ALGORITHM=INSTANT angegeben ist, aber nicht unterstützt wird, schlägt der Vorgang sofort mit einem Fehler fehl. Bezüglich der DDL-Operation von Spalten, ob Algorithmen wie Instant unterstützt werden, stellt das offizielle Dokument eine Tabelle bereit, die nun wie folgt organisiert ist. Sternchen zeigen an, dass nicht alle unterstützt werden und Abhängigkeiten bestehen.
Der am häufigsten verwendete Sofortalgorithmus ist das Hinzufügen von Spalten. Wie Sie sehen, gibt es bei der Verwendung dieses Algorithmus einige Einschränkungen. Einige der Einschränkungen sind wie folgt:
Es ist besser, es in der Praxis zu testen, als mehr zu sagen. Nehmen wir die Version 8.0.19 als Beispiel, um es in der Praxis zu überprüfen: # Verwenden Sie Sysbench, um eine 10-Millionen-Watt-Tabelle zu generierenmysql> select version(); +-------------+ | version() | +-------------+ | 8.0.19 | +-------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle count(*) aus sbtest1; +----------+ | Anzahl(*) | +----------+ | 10000000 | +----------+ # Fügen Sie eine Spalte ohne Standardwert hinzumysql> alter table sbtest1 add column col1 varchar(20), algorithm=instant; Abfrage OK, 0 Zeilen betroffen (0,63 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Fügen Sie eine Spalte mit einem Standardwert hinzu mysql> alter table sbtest1 add column create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Erstellungszeit', Algorithmus=sofort; Abfrage OK, 0 Zeilen betroffen (0,58 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Geben Sie den Instant-Algorithmus nicht explizit an mysql> alter table sbtest1 add column col2 varchar(20); Abfrage OK, 0 Zeilen betroffen (0,55 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Legen Sie den Standardwert der Spalte mysql> alter table sbtest1 alter column col1 set default 'sql',algorithm=instant; fest. Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Geben Sie den In-Place-Algorithmus zum Hinzufügen von Spalten an (dieser Algorithmus wird in Version 5.7 verwendet) mysql> Tabelle ändern sbtest1 Spalte hinzufügen col_inplace varchar(20), Algorithmus=inplace; Abfrage OK, 0 Zeilen betroffen (1 Min. 23,30 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 Durch die obigen Tests können wir feststellen, dass das Hinzufügen von Spalten mithilfe des Instant-Algorithmus grundsätzlich innerhalb von 1 Sekunde abgeschlossen ist. Bei großen Tabellen ist diese Geschwindigkeit sehr hoch und das Unternehmen ist sich dessen grundsätzlich nicht bewusst. Bei Verwendung des Inplace-Algorithmus in Version 5.7 erhöht sich die Zeit zum Hinzufügen einer Spalte auf mehrere Minuten. Im Vergleich dazu ist die Funktion zum schnellen Hinzufügen von Spalten der Version 8.0 tatsächlich sehr praktisch! Zusammenfassen: Obwohl es einige Einschränkungen beim schnellen Hinzufügen von Spalten gibt und der Sofortalgorithmus nur auf einige DDL-Operationen anwendbar ist, ist diese neue Funktion von 8.0 spannend genug und löst weitgehend das Problem des Hinzufügens von Feldern zu großen Tabellen. Ich hoffe, dass Sie durch diesen Artikel diese neue Funktion verstehen können. Wenn Sie auf 8.0 aktualisieren möchten, können Sie damit beginnen, dies genau zu tun. Oben finden Sie Einzelheiten zum schnellen Hinzufügen von Spalten in MySQL 8.0. Weitere Informationen zum schnellen Hinzufügen von Spalten in MySQL 8.0 finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Über die Probleme von Kongruenz und Ungleichheit, Gleichheit und Ungleichheit in JS
>>: Darstellung des Vorgangs zur Verwendung von FileZilla zur Verbindung mit dem FTP-Server
Inhaltsverzeichnis Vorwort 1. bat führt js aus 2....
Inhaltsverzeichnis vite Bauen Konfiguration vite....
In diesem Artikel wird der spezifische Code der J...
Inhaltsverzeichnis Hintergrund 1) Aktivieren Sie ...
In diesem Artikel wird der spezifische Code von J...
Code kopieren Der Code lautet wie folgt: <inpu...
Inhaltsverzeichnis 1. Problemerkennung 2. Detaill...
Als ich kürzlich Webseiten mit PHP schrieb, habe i...
Inhaltsverzeichnis 1. Gleichzeitige Zugriffskontr...
Ursprüngliche Adresse: http://www.webdesignfromsc...
Inhaltsverzeichnis 1. Wo ist die Langsamkeit? 2. ...
1. Entpacken Sie mysql-8.0.21-winx64 2. Konfiguri...
1. Laden Sie das Installationspaket herunter Das ...
Docker ist eine Open-Source-Container-Engine, mit...
<br />Wenn Sie Musik in eine Webseite einfüg...