Zweck der TabelleWährend der Projektentwicklung werden unsere Datenbankdaten immer größer und daher befinden sich zu viele Daten in einer einzelnen Tabelle. Dies hat zur Folge, dass Datenabfragen langsamer werden und Anwendungsvorgänge aufgrund des Tabellensperrmechanismus erheblich beeinträchtigt werden, was zu einem Engpass bei der Datenbankleistung führt. In diesem Fall können wir eine Aufteilung der Tabelle in Betracht ziehen, d. h. eine Aufteilung einer einzelnen Datenbanktabelle in mehrere Datentabellen. Wenn Benutzer dann auf die Daten zugreifen, können sie gemäß bestimmten Algorithmen auf verschiedene Tabellen zugreifen. Auf diese Weise werden die Daten auf mehrere Datentabellen verteilt, wodurch der Zugriffsdruck einer einzelnen Datentabelle verringert wird. Verbesserte Leistung beim Datenbankzugriff. Zum BeispielZum Beispiel unsere häufigste Benutzertabelle (Benutzertabelle)
Normalerweise verwenden wir die Benutzer-ID, um die entsprechenden Benutzerinformationen abzufragen. Mit zunehmendem Geschäftswachstum wird diese Tabelle jedoch immer größer, sogar in den Hunderten von Millionen, was die Abfrageleistung erheblich beeinträchtigt. Daher werden wir diese Tabelle in mehrere Tabellen aufteilen, um den Abfragedruck zu verringern Strategie zur TabellenpartitionierungAm Beispiel von 10 Tabellen (die genaue Anzahl der Tabellen sollte anhand der tatsächlichen Bedingungen geschätzt werden) erstellen wir zuerst 10 Tabellen: user1, user2 und user3. . . . . Benutzer10 Im Allgemeinen verwenden wir das indizierte Feld (Benutzer-ID) für die Modulo-Verarbeitung. Wenn Sie die Tabelle in beliebig viele Tabellen aufteilen möchten, können Sie den Modul beliebig verwenden. In diesem Fall beträgt er beispielsweise 10. $Tabellenname = $Benutzer-ID % 10; Nach der obigen Modulformel
„Jedes Mal, wenn CURD gemäß der Strategie der obigen Tabellensuche ausgeführt wird“, ist dies kein großes Problem, daher werden wir vorerst nicht darüber sprechen. Was mache ich mit den Lauftabellen, die bereits online sind?Eigentlich sollte jeder wissen, wie die oben beschriebene Methode anzuwenden ist, es gibt jedoch ein Problem: Was tun mit der Tabelle, die bereits online gestellt wurde? Die Daten in dieser Tabelle werden ständig online abgefragt oder geändert. Wie können wir die Tabellen reibungslos partitionieren, ohne dass die Benutzer es bemerken? Methode 1 Gehen Sie direkt online und schreiben Sie im Voraus ein Skript. Der Inhalt des Skripts besteht darin, die Daten der alten Tabelle (Benutzer) mit der Tabelle user1 und der Tabelle user10 zu synchronisieren. Führen Sie es aus, sobald es online geht Diese Methode ist offensichtlich nicht durchführbar, hauptsächlich aufgrund der folgenden Probleme
Dies funktioniert offensichtlich nicht und hat enorme Auswirkungen auf die Online-Community. Methode 2 Schreiben Sie zunächst ein Skript zum Synchronisieren der Daten. Der Inhalt des Skripts besteht darin, die Daten der alten Tabelle (Benutzer) mit der Tabelle user1 und der Tabelle user10 zu synchronisieren. Nachdem die Skriptsynchronisierung abgeschlossen ist, gehen Sie online. Diese Methode scheint benutzerfreundlicher zu sein, bringt aber auch einige Probleme mit sich.
„Es scheint, dass die beiden oben genannten Methoden nicht durchführbar sind, also müssen wir anscheinend etwas anderes tun. Kommen wir direkt zum Fazit.“ Schritt 1: Dual Write startenLassen Sie uns zunächst die doppelte Schrift online stellen. Was bedeutet das? Wenn beispielsweise die Benutzer-ID = 123 ist, bearbeiten wir für Hinzufügungs-, Lösch- und Änderungsvorgänge sowohl die Benutzertabelle als auch die Benutzer3-Tabelle, die der Benutzer-ID = 123 entspricht. Funktion „modify($user_id){ //Beinhaltet die Operationen „Hinzufügen“, „Löschen“ und „Ändern“ „modify_user(); //Benutzertabelle ändern $table_name = $user_id % 10; modify_user($table_name) //ändert die entsprechende Untertabelle} Da sich die Abfrage noch in der Benutzertabelle befindet, hat der obige Vorgang keine Auswirkungen auf Online-Benutzer. Schritt 2: Vollständige SynchronisierungSchreiben Sie ein Skript, um die Benutzertabelle vollständig mit der Tabelle user1-user10 zu synchronisieren. Am besten wählen Sie für die Ausführung des Skripts einen Zeitraum mit geringer Auslastung, falls es die Abfrage der Benutzertabelle beeinträchtigt. Nachdem dieser Schritt ausgeführt wurde, sind die Daten zwischen der Benutzertabelle und der Benutzer1-Benutzer10-Tabelle vollständig konsistent, da wir zuvor den dualen Schreibvorgang gestartet haben (siehe Schritt 1). Schritt 3: Abfragen der neuen TabellendatenÄndern Sie den Abfrageteil in user1-user10 Da wir in den beiden vorherigen Schritten die vollständige Datenkonsistenz zwischen der Benutzertabelle und jeder Untertabelle sichergestellt haben, besteht kein Problem darin, den Abfrageteil direkt zu ändern. Wenn Sie die oben genannten Schritte befolgen, hat dies keine Auswirkungen auf Online-Daten. So arbeiten wir online. Nach vielen Versuchen haben wir sichergestellt, dass es keine Probleme geben wird. Sie können es vertrauensvoll verwenden. ZusammenfassenDies ist das Ende dieses Artikels zum reibungslosen Starten der MySQL-Tabellenpartitionierung. Weitere Informationen zum reibungslosen Starten der MySQL-Tabellenpartitionierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: 37 Tipps für ein gutes User Interface Design (mit Bildern)
Manchmal werden einige Docker-Container nach eine...
Lernziele: Lernen Sie, MySQL-Datenbanken unter de...
In diesem Artikel wird der spezifische Code von R...
Detaillierte Erklärung der Rolle statischer Varia...
1. Übersicht über Dateiberechtigungen und Eigentu...
1. Ereignissprudeln : Wenn im Prozess der Ereigni...
Inhaltsverzeichnis 1. Was ist Promise? 2. Warum g...
Öffnen Sie den gerade entpackten Ordner C:\web\my...
Schritt 1: Stellen Sie sicher, dass MySQL Binlog ...
Inhaltsverzeichnis Beispiel 1 Beispiel 2 Beispiel...
Registerkarten: Kategorie + Beschreibung Tag-Leis...
Inhaltsverzeichnis 1. Installieren Sie das psutil...
In diesem Artikelbeispiel wird der spezifische JS...
In diesem Artikel wird der spezifische Code für J...
Problembeschreibung Die MySQL-Startfehlermeldung ...