1 Eine Bestelltabelle von 100 Millionen kann in fünf Tabellen unterteilt werden, sodass jede Tabelle nur 20 Millionen Daten enthält und den Druck der ursprünglichen Tabelle teilt. Die Untertabellen müssen hier unterteilt werden nach Regionen unterteilt werden, ist eine Middleware erforderlich, um zu steuern, zu welcher Tabelle die gewünschten Daten gefunden werden sollen. Middleware: Verwenden Sie die automatisch inkrementierte ID der Haupttabelle als Middleware (welche Felder eignen sich für Middleware? Sie müssen eindeutig sein). Wie wird verteilt? Nach dem Einfügen in die Haupttabelle wird eine ID zurückgegeben und das Modulo wird basierend auf dieser ID und der Anzahl der Tabellen ermittelt. Die Daten werden in die Tabelle eingefügt, aus der der Rest besteht. Hinweis: Die ID in der Untertabelle muss mit der ID der Haupttabelle übereinstimmen.
In Zukunft wird die Haupttabelle nur noch von Einfügevorgängen verwendet. Beim Ändern, Löschen und Lesen muss die Haupttabelle nicht mehr verwendet werden.
1 Was ist eine Nachrichtenwarteschlange? Container, der Nachrichten während des Nachrichtenweitergabeprozesses speichert2, die historischen Gründe für die Generierung von Nachrichtenwarteschlangen
Eigenschaften von Nachrichtenwarteschlangen: First In, First Out
Speichern Sie zuerst die auszuführende SQL-Anweisung in der Nachrichtenwarteschlange , und folgen Sie dann dem reibungslosen asynchronen Ablauf in der eingefügten Datenbank
Anwendung: Sina, legen Sie zuerst die Sofortkommentare in die Nachrichtenwarteschlange ein und fügen Sie dann die SQL-Anweisungen in der Nachrichtenwarteschlange nacheinander durch geplante Aufgaben in die Datenbank ein
Ändern
Betreiben Sie die zu ändernde Untertabelle
Bei dieser Änderung liegt ein Problem vor. Die Daten in der Haupttabelle und der Untertabelle sind inkonsistent -Tabelle konsistent?
Die Redis-Warteschlange hält die Daten der Haupttabelle und der Untertabellen konsistent
Nach Abschluss der Änderung werden die Daten der Haupttabelle geändert und in der Redis-Warteschlange gespeichert
Dann das Linux Geplante Aufgabenschleifen (contble), um die Daten in der SQL-Anweisung der Redis-Warteschlange auszuführen und den Inhalt der Haupttabelle synchron zu aktualisieren Um die Untertabelle abzufragen, fragen Sie nicht die Haupttabelle ab
Zuerst löschen Suchen Sie anhand der ID die zu löschende Untertabelle, löschen Sie sie und drücken Sie dann eine SQL-Anweisung, um die gesamten Tabellendaten zu löschen NachrichtenwarteschlangeFühren Sie dann eine geplante Aufgabe aus, um die gesamten Tabellendaten zu löschen
Geplante Aufgabe:
MySQL-verteilte Zweigbibliothek
Idee einer Zweigbibliothek
Schema der Zweigbibliothek :
Verteilte MySQL-Zweigdatenbank (erhöht) Wird immer noch durch Modulus bestimmt. Welche Konfigurationsdatei soll geladen werden, um eine Verbindung zu welcher Datenbank herzustellen?
Legen Sie die Daten in den Cache, um den Datenbank-Overhead zu sparen. Wenn nicht, gehen Sie zur Datenbank, um sie zu überprüfen, und speichern Sie sie dann im Cache. Sie müssen den Cache löschen, sonst lesen Sie immer die zwischengespeicherten Daten und nicht die geänderten Daten.
Das obige ist der detaillierte Inhalt vonPHP in Kombination mit MySQL führt zig Millionen Datenverarbeitungen durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!