2. Sharding (ähnlich wie Sharding)
3. Scale Out/Scale Up und Vertical Splitting/Horizontal Splitting
Scale Up (vertikale Erweiterung) bedeutet, dass die Anwendung in vertikaler Richtung erweitert werden kann. Im Allgemeinen lohnt sich die Skalierung für eine einzelne Maschine, wenn ein Rechenknoten (eine Maschine) mehr CPU-Kerne und Speichergeräte hinzufügt und größeren Speicher verwendet. Dadurch kann die Anwendung diese Ressourcen vollständig nutzen gute Skalierbarkeit.
Die Sharding-Strategie von MySql umfasst vertikales Sharding und horizontales Sharding.
Vertikale (vertikale) Aufteilung: Bezieht sich auf die Aufteilung nach Funktionsmodulen, um den Io-Wettbewerb zwischen Tabellen zu lösen. Es ist beispielsweise in Bestelldatenbank, Produktdatenbank, Benutzerdatenbank usw. unterteilt. Auf diese Weise sind die Tabellenstrukturen mehrerer Datenbanken unterschiedlich.
Horizontale (horizontale) Aufteilung: Speichern Sie die Daten derselben Tabelle in Blöcken und speichern Sie sie in verschiedenen Datenbanken, um den Druck des zunehmenden Datenvolumens in einer einzelnen Tabelle zu lösen. Die Tabellenstrukturen in diesen Datenbanken sind genau gleich.
Das Design der Tischstruktur ist vertikal unterteilt. Zu den häufigsten Szenarien gehört die vertikale Segmentierung großer Felder. Bauen Sie große Felder separat in einer anderen Tabelle auf, um die Zugriffsleistung der Basistabelle zu verbessern. Bei leistungskritischen Anwendungen sollten große Felder grundsätzlich vermieden werden. Beispielsweise können Unternehmensmaterialattribute vertikal nach Basisattributen, Verkaufsattributen, Einkaufsattributen, Fertigungsattributen, Finanzbuchhaltungsattributen usw. segmentiert werden. Vertikal segmentiert nach Zugriffshäufigkeit. Wenn beispielsweise in E-Commerce- und Web 2.0-Systemen viele Benutzerattributeinstellungen vorhanden sind, können grundlegende, häufig verwendete Attribute und selten verwendete Attribute vertikal getrennt und das Tabellenstrukturdesign horizontal unterteilt werden. Einige häufige Szenarien umfassen:
Auf einer Online-E-Commerce-Website ist die Menge der Bestelltabellendaten beispielsweise zu groß und sie sind nach Jahres- und Monatsebene unterteilt.
Web 2.0-Website viele registrierte Benutzer und online aktive Benutzer, entsprechend dem Benutzer-ID-Bereich usw. Methode, horizontale Segmentierung verwandter Benutzer und Tabellen, die eng mit dem Benutzer verbunden sind
Zum Beispiel der Top-Beitrag im Forum, da es sich um Paging-Probleme handelt, Auf jeder Seite muss der Top-Beitrag angezeigt werden. In diesem Fall kann der Top-Beitrag horizontal unterteilt werden. Bitte vermeiden Sie es, beim Abrufen des angehefteten Beitrags aus der Tabelle aller Beiträge zu lesen
Oberflächlich betrachtet bedeutet Untertabelle die Aufteilung einer Tabelle in mehrere kleine Tabellen, und Partitionierung bedeutet die Aufteilung einer Tabelle in mehrere kleine Tabellen. Diese Blöcke können sich auf derselben Festplatte oder auf verschiedenen Festplatten befinden.
Der Unterschied zwischen geteilten Tabellen und Partitionen
Nach der Aufteilung in Tabellen werden die Daten in den geteilten Tabellen gespeichert. Die Haupttabelle ist nur eine Hülle, und der Datenzugriff erfolgt in jeder geteilten Tabelle. Bei der Partitionierung gibt es kein Konzept der Tabellenpartitionierung. Die Partitionstabelle ist immer noch eine Tabelle und die Datenverarbeitung wird immer noch von Ihnen selbst durchgeführt.
Nach der Aufteilung von Tabellen wurde die Parallelitätsfähigkeit einer einzelnen Tabelle verbessert und auch die Festplatten-E/A-Leistung wurde verbessert. Die Partition durchbricht den E/A-Engpass der Festplatte und ich möchte die Lese- und Schreibfähigkeiten der Festplatte verbessern, um die MySQL-Leistung zu erhöhen.
Zu diesem Zeitpunkt liegen die Testschwerpunkte von Partitionen und Untertabellen darin, wie die Parallelität von MySQL beim Zugriff auf Daten verbessert werden kann und wie die Lese- und Schreibfähigkeiten von Partitionen durchbrochen werden können die Festplatte, wodurch die Leistung von MySQL verbessert wird.
CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, order_day DATETIME NOT NULL, PRIMARY KEY(id, order_day)) ENGINE=InnodbPARTITION BY RANGE(YEAR(order_day)) ( PARTITION p_2010 VALUES LESS THAN (2010), PARTITION p_2011 VALUES LESS THAN (2011), PARTITION p_2012 VALUES LESS THAN (2012),PARTITION p_catchall VALUES LESS THAN MAXVALUE);
MySQL-Video-Tutorial
"
Das obige ist der detaillierte Inhalt vonEine ausführliche Erklärung von MySql-Tabellen, Datenbanken, Shards und Partitionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!