Vertikaler Tisch Vertikale Tabellenaufteilung bedeutet, eine Tabelle mit vielen Spalten in mehrere Tabellen aufzuteilen. Beispielsweise enthält Tabelle A 20 Felder und wird nun in die Tabellen A1 und A2 aufgeteilt, wobei jede Tabelle zehn Felder enthält (die spezifische Aufteilungsmethode hängt vom Unternehmen ab). Vorteil: In Szenarien mit hoher Parallelität kann die Anzahl der Tabellensperren und Zeilensperren reduziert werden. Nachteile: Bei sehr großen Datensätzen kommt es immer noch zu Engpässen bei der Lese- und Schreibgeschwindigkeit. Horizontaler Tisch Wenn eine bestimmte Website eine Tabelle mit Hunderten Millionen Datensätzen in ihrer Datenbank hat, ist die Abfrage ohne Index sehr langsam, wenn Sie sie über select abfragen. In diesem Fall können Sie den Hash-Algorithmus verwenden, um die Tabelle in 10 Untertabellen aufzuteilen (derzeit beträgt die Datenmenge in jeder Tabelle nur 10 Millionen Datensätze). Gleichzeitig wird eine allgemeine Tabelle generiert, in der die Informationen jeder Untertabelle aufgezeichnet werden. Wenn Sie einen Datensatz mit der ID = 100 abfragen, muss nicht mehr die gesamte Tabelle gescannt werden. Stattdessen wird die allgemeine Tabelle verwendet, um die entsprechende Untertabelle zu finden, in der sich der Datensatz befindet, und dann wird die entsprechende Tabelle durchsucht, wodurch der IO-Druck verringert wird. Nachteile: Die Wartung des SQL-Codes der Front-End-Programmanwendung wird große Probleme verursachen. Derzeit können Sie die MySQL Merge-Speicher-Engine verwenden, um die Tabellenpartitionierung zu implementieren. ---------------------------------------Ich bin die Trennlinie, die mir Schmerzen bereitet---------------------------------------------------- Die Verwendung der Merge-Speicher-Engine zum Partitionieren von Tabellen ist für die SQL-Anweisungen der Anwendung transparent und erfordert keine Codeänderungen. CREATE TABLE t1 ( ein INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nachricht CHAR(20)); CREATE TABLE t2 (ein INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nachricht CHAR(20)); INSERT INTO t1 (Nachricht) VALUES ('Testen'), ('Tabelle'), ('t1'); INSERT INTO t2 (Nachricht) VALUES ('Testen'), ('Tabelle'), ('t2'); CREATE TABLE insgesamt (ein INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nachricht CHAR(20)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; Beim Erstellen der Gesamttabelle kann es zu einem Fehler kommen: Die zugrunde liegende Tabelle, die anders definiert ist, nicht vom Typ MyISAM ist oder nicht existiert, kann nicht geöffnet werden. Tatsächlich ist die Merge-Speicher-Engine eine virtuelle Tabelle, und die entsprechende tatsächliche Tabelle muss eine Tabelle vom Typ MyISAM sein. Wenn Ihre MySQL-Version 5.1 oder höher ist, verwendet die Standarddatenbank die InnoDB-Speicher-Engine. Daher müssen beim Erstellen von total die Tabellen t1 und t2 MyISAM-Speicher-Engines sein. Wenn Sie regelmäßig Untertabellen hinzufügen müssen, müssen Sie nur die Vereinigung der zusammengeführten Tabelle ändern. Tabelle erstellen t3 (ein INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nachricht CHAR (20)); ALTER TABLE total UNION=(t1,t2,t3) Horizontale Trennwand Wenn beispielsweise 1 Million Daten vorhanden sind, werden sie in zehn Teile aufgeteilt. Die ersten 100.000 Daten werden in der ersten Partition abgelegt, die zweiten 100.000 Daten werden in der zweiten Partition abgelegt und so weiter. Wenn ein Datenelement abgerufen wird, enthält es alle Felder in der Tabellenstruktur und die horizontale Partitionierung ändert die Tabellenstruktur nicht. Vertikale Trennwand Wenn Sie beispielsweise eine Benutzertabelle entwerfen, denken Sie möglicherweise am Anfang nicht sorgfältig nach und fügen alle persönlichen Informationen in eine Tabelle ein. Diese Tabelle enthält relativ große Felder, z. B. persönliche Profile. Diese Profile werden jedoch möglicherweise nicht von vielen Personen angezeigt. Wenn also jemand sie anzeigen möchte, sucht er danach. Beim Aufteilen der Tabelle können Sie solche großen Felder trennen. Eine vollständige Tabelle entspricht drei Dateien: einer .MYD-Datendatei, einer .MYI-Indexdatei und einer .frm-Tabellenstrukturdatei. Das könnte Sie auch interessieren:
|
<<: Verwenden Sie natives JS, um den Scroll-Effekt des Live-Bullet-Bildschirms zu simulieren
Einführung in Jib Jib ist eine von Google entwick...
Lösung für MySQLSyntaxErrorException beim Herstel...
Indextypen in MySQL Im Allgemeinen können sie in ...
Dabei wird das Bild als Hintergrund verwendet und...
In diesem Artikel wird der spezifische Code von j...
1. Einführung in mysqldump mysqldump ist ein logi...
Inhaltsverzeichnis Voraussetzungen Effekt verwend...
Die Tabellenstruktur ist wie folgt: Ich würde var...
Mybatis Paging-Plugin pageHelper - ausführliche E...
Inhaltsverzeichnis Vererbung und Prototypenkette ...
In diesem Artikel finden Sie das Installations- u...
Inhaltsverzeichnis Schreiben Sie vor Geschäftscod...
Heute werde ich Ihnen zeigen, wie Sie das Linux-S...
Ergebnis: html <nav id="nav-1"> &...
Dieser Artikel beschreibt die Linux-Benutzer- und...