Mysql-Lösung zur Verbesserung der Effizienz beim Kopieren großer Datentabellen

Mysql-Lösung zur Verbesserung der Effizienz beim Kopieren großer Datentabellen

Vorwort

Dieser Artikel stellt hauptsächlich den relevanten Inhalt zur Verbesserung der Effizienz beim Kopieren großer Datentabellen in MySQL vor und gibt ihn zu Ihrer Information und zum Lernen weiter. Bei der Arbeit stoßen wir häufig auf große Datentabellen.

Szenario: Die Datentabelle muss geändert werden, z. B. muss ein Feld hinzugefügt oder entfernt werden. Dies kann bei einer Datentabelle mit Zehntausenden von Daten direkt erfolgen, bei einer Datentabelle mit fast 10 Millionen Daten ist dies jedoch nicht einfach.

Mögliche Situationen:

1. Die Datenbank zum Absturz bringen oder einfrieren

2. Bewirkt, dass andere Prozesse die Lese- und Schreib-E/A der Datenbank verlangsamen

3. Eine andere Möglichkeit besteht darin, dass das Datenformat inkonsistent ist und die Daten nicht geschrieben werden können (z. B. muss ein varchar-Typ in einen int-Typ geändert werden, und wenn die Datenlänge zu groß ist, wird ein Fehler gemeldet).

Lösung:--

1. Erstellen Sie eine Datentabelle neu. Erstellen Sie eine neue create new_table select * from old_table Diese Form entspricht dem Kopieren einer neuen Datentabelle. ---- (nicht empfohlen): Es werden nur die Felder und Daten der Datentabelle kopiert. Der Primärschlüssel, der Index und der Standardwert der Tabellenstruktur werden jedoch nicht kopiert.

2. In zwei Schritte aufteilen

1). create new_table create new_table like old_table eine neue Tabelle mit der gleichen Struktur wie old_table (einschließlich Primärschlüssel, Index und Standardwert usw.).

2). insert into new_table insert into new_table select * from old_table

----(Bei geringen Datenmengen wird die Verwendung dieser Lösung empfohlen, wenn die Datenmenge Millionen oder Zehnmillionen erreicht. Bei Datenmengen im Millionen- oder Zehnmillionenbereich ist diese Lösung nicht anwendbar.)

Erweiterung: Wenn Sie nur einen Teil der Datentabelle kopieren möchten, können Sie „insert into new_table (field1, field2) select field1, field2 from old_table [limit n,m];“ angeben.

3.

1). Exportieren Sie die Daten der Datentabelle mit select from into outfile

2). load data infile into

Schauen wir uns ohne weitere Umschweife das Bild an und sehen wir, wie sehr sich die Verarbeitungsgeschwindigkeit von Lösung 2 und Lösung 3 bei einem Datenvolumen von etwa 1 Million unterscheidet.

>Wählen Sie * aus money_info in die Ausgabedatei '/var/lib/mysql-files/money.txt'; 
>Tabelle money_info_cyq11 wie money_info erstellen;
>Lade Daten in Datei '/var/lib/mysql-files/money.txt' in Tabelle money_info_cyq11;
>Tabelle money_info_cyq22 wie money_info erstellen;
>in money_info_cyq22 einfügen, wähle * aus money_info; 

Die Geschwindigkeit ist etwa 4-mal schneller, die im Internet erwähnte 20-fache Geschwindigkeit wurde noch nicht erreicht [Gesicht verdeckt]

Hinweis: Es besteht immer noch ein Problem

Das Outfile-Verzeichnis ist erforderlich

>Variablen wie „%secure%“ anzeigen;

Mit diesem Befehl können Sie den Speicherort des Verzeichnisses anzeigen, das der Out-Datei von Secure_File_Priv entspricht, und diesen Speicherort für den Export angeben.


Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Beispiel für die Migration einer MySQL-Datenbank durch Kopieren von Datendateien
  • MySQL-Hotcopy für Sicherung und Wiederherstellung (4)
  • So fügen Sie einer großen Datentabelle in MySQL Felder hinzu

<<:  Beispiel für das Einrichten einer Whitelist in Nginx mithilfe des Geomoduls

>>:  Bootstrap realisiert den Karusselleffekt

Artikel empfehlen

Beispiele für die Verwendung von MySQL-Abdeckungsindizes

Was ist ein Deckungsindex? Das Erstellen eines In...

So platzieren Sie große Bilder auf kleinem Raum einer Webseite

Originalquelle: www.bamagazine.com Enge Bereiche ...

Eine kurze Diskussion über Lösungen zum Stören von CSS3-Animationen

Warum steckt es fest? Es gibt eine Prämisse, die ...

Automatischer Commit-Vorgang für MySQL-Transaktionen

Der Standardbetriebsmodus von MySQL ist der Autoc...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

Ein Artikel erklärt den Klassenlademechanismus von Tomcat

Inhaltsverzeichnis - Vorwort - - JVM-Klassenlader...

So verwenden Sie das Modul-FS-Dateisystem in Nodejs

Inhaltsverzeichnis Überblick Dateideskriptoren Sy...

Implementierung der Multi-Environment-Konfiguration (.env) des Vue-Projekts

Inhaltsverzeichnis Was ist eine Multiumgebungskon...

So erstellen Sie Komponenten in React

Inhaltsverzeichnis Vorwort Komponenteneinführung ...

Lösen Sie das Problem der verstümmelten Zeichen im Tomcat10 Catalina-Protokoll

Laufumgebung, Idea2020-Version, Tomcat10, beim Au...

Fünf Möglichkeiten zum Durchlaufen von JavaScript-Arrays

Inhaltsverzeichnis 1. for-Schleife: grundlegend u...