Heim  >  Artikel  >  Backend-Entwicklung  >  So kombinieren Sie PHP mit MySQL für die Datenverarbeitung im zweistelligen Millionenbereich

So kombinieren Sie PHP mit MySQL für die Datenverarbeitung im zweistelligen Millionenbereich

coldplay.xixi
coldplay.xixinach vorne
2020-07-07 16:26:533001Durchsuche

So kombinieren Sie PHP mit MySQL für die Datenverarbeitung im zweistelligen Millionenbereich

MySQL-Untertabellen-Idee


Eine Bestelltabelle im Wert von 100 Millionen kann in fünf Tabellen unterteilt werden , so dass jede Tabelle nur 20 Millionen Daten hat und den Druck der Originaltabelle teilt. Hier können die Tabellen nach Regionen unterteilt werden Tabelle geht zu Tabelle, um die gewünschten Daten zu finden.
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. Änderungen, Löschungen und Lesevorgänge müssen nicht mehr verwendet werden Haupttabelle

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zum Master

PHP 结合 MySQL 千万级数据处理

Redis-Nachrichtenwarteschlange

1. Was ist eine Nachrichtenwarteschlange?
Container zum Speichern von Nachrichten während der Nachrichtenweitergabe
2. Historische Gründe für die Erstellung von Nachrichtenwarteschlangen

PHP 结合 MySQL 千万级数据处理

Eigenschaften von Nachrichtenwarteschlangen: First In, First Out
Die ausgeführten SQL-Anweisungen werden zunächst in der Nachrichtenwarteschlange gespeichert und dann nacheinander reibungslos und asynchron in die Datenbank eingefügt.
Anwendung: Sina, fügen Sie zuerst die Sofortkommentare in die Nachrichtenwarteschlange ein und fügen Sie dann die SQL-Anweisungen in die Nachricht ein Warteschlange nacheinander durch geplante Aufgaben. Gehen Sie zur Datenbank

Ändern

Vorgangsuntertabelle zum Ändern

PHP 结合 MySQL 千万级数据处理

Bei dieser Änderung liegt ein Problem vor. In der Haupttabelle treten Inkonsistenzen mit den Daten in der Untertabelle auf. Wie können die Daten in der Haupttabelle und der Untertabelle konsistent gemacht werden?

Die Redis-Warteschlange hält die Daten der Haupttabelle und der Untertabelle konsistent.

Nach Abschluss der Änderung werden die Daten der Haupttabelle geändert und in der gespeichert Redis-Warteschlange

PHP 结合 MySQL 千万级数据处理

Dann führt die geplante Linux-Aufgabe (contble) die SQL-Anweisung in der Redis-Warteschlange in einer Schleife aus und aktualisiert den Inhalt der Haupttabelle synchron

PHP 结合 MySQL 千万级数据处理

MySQL-verteilte Untertabelle (abfragen, löschen)

Abfrage muss nur die Untertabelle abfragen, nicht die Haupttabelle abfragen

PHP 结合 MySQL 千万级数据处理

Löschen, suchen Sie zuerst das Objekt anhand der ID. Löschen Sie die Untertabelle, löschen Sie sie dann und drücken Sie dann eine SQL-Anweisung, um die gesamten Tabellendaten in die Nachrichtenwarteschlange zu löschen
und dann eine geplante Aufgabe ausführen, um die gesamten Tabellendaten zu löschen

PHP 结合 MySQL 千万级数据处理

geplante Aufgabe:

PHP 结合 MySQL 千万级数据处理

MySQL-Datenbank für verteilte Zweige

Idee einer geteilten Datenbank

PHP 结合 MySQL 千万级数据处理

Schema der Unterbibliothek:

PHP 结合 MySQL 千万级数据处理

PHP 结合 MySQL 千万级数据处理

MySQL verteilte Zweigdatenbank (erhöht)

PHP 结合 MySQL 千万级数据处理
Hinweis: Nach dem Betrieb einer Datenbank müssen Sie die Datenbankverbindung schließen, da MySQL sonst denkt, dass sie immer verbunden ist Dieselbe Datenbank

benötigt immer noch das Modul, um zu bestimmen, welche Konfigurationsdatei geladen und mit welcher Datenbank verbunden werden soll

PHP 结合 MySQL 千万级数据处理

MySQL Distributed Branch Library (geändert)

Das Prinzip ähnelt dem neu hinzugefügten

PHP 结合 MySQL 千万级数据处理

MySQL Distributed Branch Database (prüfen, löschen)

Das Prinzip ist ähnlich

PHP 结合 MySQL 千万级数据处理
Löschen

PHP 结合 MySQL 千万级数据处理
Ausführungswarteschlange

MySQL Distributed Cache ( memcache)-Anwendung

Legen Sie die Daten in den Cache, um den Datenbank-Overhead zu sparen. Wenn sie gefunden werden, überprüfen Sie sie direkt in der Datenbank der Cache

PHP 结合 MySQL 千万级数据处理

Nachdem Sie die Informationen bearbeitet haben, müssen Sie den Cache löschen, sonst lesen Sie immer die zwischengespeicherten Daten anstelle der geänderten Daten

PHP 结合 MySQL 千万级数据处理

Das obige ist der detaillierte Inhalt vonSo kombinieren Sie PHP mit MySQL für die Datenverarbeitung im zweistelligen Millionenbereich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen