Sharding ist eine gute Möglichkeit, den Druck auf die Datenbank zu verteilen.
Die einfachste Bedeutung besteht darin, eine Tabellenstruktur in mehrere Tabellen zu unterteilen und diese dann in derselben Bibliothek oder in verschiedenen Bibliotheken abzulegen.
Natürlich müssen Sie zunächst wissen, unter welchen Umständen Sie den Tisch aufteilen müssen. Persönlich denke ich, dass es notwendig ist, Untertabellen zu verwenden, wenn die Anzahl der Datensätze in einer einzelnen Tabelle Millionen bis Dutzende Millionen erreicht.
1. Klassifizierung von Untertabellen
1> Vertikale Untertabelle
teilt den Inhalt, der sich in derselben Tabelle befinden könnte, künstlich in mehrere Tabellen auf. (Das sogenannte Original bedeutet, dass sie sich gemäß den Anforderungen des dritten Paradigmas der relationalen Datenbank in derselben Tabelle befinden sollten.)
Grund für die Aufteilung der Tabellen: Trennung nach Aktivität der Daten (wegen unterschiedlicher Aktivität). Daten, Verarbeitungsmethoden sind unterschiedlich)
Fall:
Für ein Blog-System sind der Artikeltitel, der Autor, die Kategorie, die Erstellungszeit usw. langsam, die Anzahl der Abfragen hoch und die Häufigkeit der Änderungen langsam Am besten ist es, gute Echtzeitdaten zu haben, wir nennen es kalte Daten. Blogaufrufe, Anzahl der Antworten, ähnliche statistische Informationen oder andere Daten, die sich relativ häufig ändern, nennen wir aktive Daten. Daher sollten Sie beim Entwerfen der Datenbankstruktur die Tabellenpartitionierung berücksichtigen. Die erste ist die Verarbeitung der vertikalen Tabellenpartitionierung.
Nachdem die Tabelle auf diese Weise vertikal aufgeteilt wurde:
Zunächst kann die Speicher-Engine anders für kalte Daten verwendet werden, um die Daten besser abzufragen. Für aktive Daten können Sie Innodb verwenden, das eine bessere Aktualisierungsgeschwindigkeit bietet.
Zweitens konfigurieren Sie mehr Slave-Datenbanken für kalte Daten, da mehr Vorgänge abgefragt werden, wodurch die Abfragegeschwindigkeit beschleunigt wird. Bei Hot-Daten kann es in der Hauptdatenbank relativ mehr horizontale Untertabellenverarbeitung geben.
Tatsächlich können Sie für einige spezielle aktive Daten auch die Verwendung von Caches wie Memcache und Redis in Betracht ziehen und dann die Datenbank aktualisieren, wenn die Ansammlung eine bestimmte Menge erreicht. Oder eine NoSQL-Datenbank wie Mongodb. Dies ist nur ein Beispiel, daher werde ich nicht zuerst darauf eingehen.
2>Horizontale Tabellenaufteilung
Wie Sie aus der wörtlichen Bedeutung ersehen können, handelt es sich dabei um das horizontale Aufteilen einer großen Tabellenstruktur in verschiedene Tabellen derselben Struktur, z. B. Benutzerinformationstabelle, Benutzer_1, Benutzer_2 usw. Die Tabellenstruktur ist genau die gleiche, die Tabelle ist jedoch nach bestimmten Regeln unterteilt, z. B. einer modularen Aufteilung basierend auf der Benutzer-ID.
Grund für die Aufteilung von Tabellen: Teilen Sie es entsprechend der Größe des Datenvolumens auf, um sicherzustellen, dass die Kapazität einer einzelnen Tabelle nicht zu groß ist, und stellen Sie so die Abfrage- und andere Verarbeitungsfunktionen einer einzelnen Tabelle sicher.
Fall: Wie im obigen Beispiel, Blog-System. Wenn das Blogvolumen ein großes Niveau erreicht, sollte eine horizontale Segmentierung eingeführt werden, um den Druck auf jede einzelne Tabelle zu verringern und die Leistung zu verbessern. Wenn beispielsweise die Kaltdatentabelle eines Blogs in 100 Tabellen unterteilt ist und 1 Million Benutzer gleichzeitig surfen, werden 1 Million Anfragen gestellt, wenn es sich um eine einzelne Tabelle handelt. Es kann sein, dass für jede Tabelle 10.000 Datenanfragen gestellt werden (da es unmöglich ist, einen absoluten Durchschnitt zu erhalten, sondern nur eine Annahme), sodass der Druck erheblich verringert wird.
Datenbankreplikation kann das Zugriffsproblem lösen, aber nicht das Problem des gleichzeitigen Schreibens in großem Maßstab. Um dieses Problem zu lösen, müssen wir die MySQL-Datensegmentierung in Betracht ziehen.
Datensegmentierung, wie der Name schon sagt Es gibt zwei Möglichkeiten, die Daten entsprechend dem Geschäftsmodul aufzuteilen Eine andere Methode besteht darin, die Daten nach bestimmten Geschäftsregeln oder Logik aufzuteilen. Dies ähnelt in gewisser Weise der Tabellenpartitionierung von Oracle.
Unterbibliothek wird auch als vertikale Partitionierung bezeichnet. Diese Methode ist relativ einfach zu implementieren. Bei der Unterbibliothek ist es wichtig, klar über die Interaktion zwischen den einzelnen Geschäftsmodulen nachzudenken Modul, um das Schreiben von Programmen in Zukunft zu vermeiden. Es gibt zu viele datenbankübergreifende Operationen.
Tabellenpartitionierung wird auch als horizontale Partitionierung bezeichnet. Diese Methode ist komplizierter zu implementieren als die vertikale Partitionierung, kann jedoch das Problem lösen, das die vertikale Partitionierung nicht lösen kann, dh der Zugriff und das Schreiben einer einzelnen Tabelle sind sehr schwierig Zu diesem Zeitpunkt können die Tabellen nach bestimmten Geschäftsregeln unterteilt werden (PS: Zum Beispiel das Konzept der Mitgliedschaftsstufe des Internet-BBS-Forums: Dies kann den Druck auf a verringern). einzelne Tabelle und lösen Sie die häufigen Konflikte zwischen verschiedenen Modulen.
Die Vorteile der Unterdatenbank sind: einfache Implementierung, klare Grenzen zwischen Bibliotheken und einfache Wartung. Der Nachteil besteht darin, dass sie häufigen datenbankübergreifenden Vorgängen nicht förderlich ist und das Problem eines großen Datenvolumens besteht Eine einzelne Tabelle kann nicht gelöst werden.
Der Vorteil der Untertabelle besteht darin, dass sie die Mängel der Unterdatenbank beheben kann, aber der Nachteil ist genau der Vorteil der Untertabelle. Die Implementierung der Untertabelle ist komplizierter, insbesondere die Aufteilung Tabellenunterregeln, das Schreiben von Programmen und die spätere Migration und Wartung von Datenbanksplitten.
In der Praxis besteht der allgemeine Weg von Internetunternehmen darin, zuerst die Datenbank und dann die Tabelle zu teilen. Beides wird kombiniert, um aus den Stärken und Schwächen des anderen zu lernen Der Vorteil der MySQL-Erweiterung besteht jedoch darin, dass die Architektur groß und komplex ist.
Das obige ist der detaillierte Inhalt vonMySQL-Sharing von Tipps für Unterdatenbanken und Tabellen-Unterdatenbanken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!