Beispiel für die Verwendung von MRG_MyISAM (MERGE) zur Implementierung einer Abfrage nach der Partitionierung in MySQL

Beispiel für die Verwendung von MRG_MyISAM (MERGE) zur Implementierung einer Abfrage nach der Partitionierung in MySQL

Die Optimierung großer Datenbankdatenmengen ist eine umfassende Wissenschaft und zudem eine professionelle Fähigkeit, die ein Entwickler beherrschen muss.

Die MySQL-Tabellenpartitionierung kann in vertikale und horizontale Partitionierung unterteilt werden. Beide Partitionierungsformen sind relativ einfach. Einfach ausgedrückt bedeutet vertikale Partitionierung, dass die Tabelle nicht viele Datensätze enthält, die Felder jedoch sehr lang sind, die Tabelle viel Platz einnimmt und beim Abrufen der Tabelle eine große Menge an IO ausgeführt werden muss, was die Leistung erheblich beeinträchtigt. Zu diesem Zeitpunkt müssen Sie die großen Felder in eine andere Tabelle aufteilen, und diese Tabelle hat eine Eins-zu-eins-Beziehung zur ursprünglichen Tabelle. Bei der horizontalen Tabellenpartitionierung werden die Daten derselben Tabelle nach bestimmten Regeln in mehrere Tabellen innerhalb derselben Datenbank aufgeteilt. Der Zweck besteht darin, die Leistungsprobleme zu optimieren, die durch zu viele Daten in einer einzelnen Tabelle verursacht werden, IO-Konflikte zu vermeiden und die Wahrscheinlichkeit einer Tabellensperre zu verringern.

Es ist einfach, Tabellen-Sharding zu implementieren. Der komplizierte Teil besteht jedoch darin, die Daten nach dem Sharding abzufragen. Die heutige Implementierung besteht in der Verwendung der Mysql-Tabellen-Engine MRG_MyISAM (MERGE).
Die MERGE-Speicher-Engine, auch bekannt als MRG_MyISAM-Engine, ist eine Sammlung identischer MyISAM-Tabellen, die als eine verwendet werden können. „Gleich“ bedeutet, dass für alle Tabellen die gleichen Spalten- und Indexinformationen gelten. Sie können keine Tabellen zusammenführen, deren Spalten in unterschiedlicher Reihenfolge aufgelistet sind, die nicht genau dieselben Spalten aufweisen oder deren Indizes in unterschiedlicher Reihenfolge vorliegen. Darüber hinaus können einzelne oder alle Tabellen mit myisampack komprimiert werden. Unterschiede in Tabellenoptionen wie AVG_ROW_LENGTH, MAX_ROWS oder PACK_KEYS sind nicht signifikant.

Wenn Sie eine MERGE-Tabelle erstellen, erstellt MySQL zwei Dateien auf der Festplatte. Der Dateiname beginnt mit dem Namen der Tabelle und hat eine Erweiterung, die den Dateityp angibt. Eine .frm-Datei speichert die Tabellendefinition und eine .MRG-Datei enthält den Namen der zu verwendenden Tabelle. Diese Tabellen müssen sich nicht in derselben Datenbank wie die MERGE-Tabelle selbst befinden.

Sie können SELECT, DELETE, UPDATE und INSERT auf Tabellensammlungen anwenden. Sie müssen über die Berechtigungen „SELECT“, „UPDATE“ und „DELETE“ für die Tabellen verfügen, die Sie einer MERGE-Tabelle zuordnen.

Wenn Sie eine MERGE-Tabelle löschen, entfernen Sie nur die MERGE-Spezifikation. Die zugrunde liegende Tabelle ist davon nicht betroffen.

Wenn Sie eine MERGE-Tabelle erstellen, müssen Sie eine UNION=(Liste der Tabellen)-Klausel angeben, die angibt, welche Tabellen Sie als eine Tabelle verwenden möchten. Wenn Einfügungen in die MERGE-Tabelle in der ersten oder letzten Tabelle in der UNION-Liste erfolgen sollen, können Sie optional eine INSERT_METHOD-Option angeben. Verwenden Sie den Wert FIRST oder LAST, um die Einfügung in der ersten bzw. letzten Tabelle vorzunehmen. Wenn Sie die Option INSERT_METHOD nicht angeben oder diese Option mit dem Wert NO angeben. Beim Versuch, einen Datensatz in eine MERGE-Tabelle einzufügen, tritt ein Fehler auf.

Zum Beispiel:
Erstellen Sie zwei Untertabellen:

TABELLE ERSTELLEN `yzm_table1` (
  `id` int(10) unsigned NICHT NULL,
  `title` varchar(100) NICHT NULL STANDARD '',
  `content` varchar(255) NICHT NULL STANDARD '',
  PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=MyISAM STANDARD-CHARSET=utf8;

TABELLE `yzm_table2` erstellen (
  `id` int(10) unsigned NICHT NULL,
  `title` varchar(100) NICHT NULL STANDARD '',
  `content` varchar(255) NICHT NULL STANDARD '',
  PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=MyISAM STANDARD-CHARSET=utf8;

Die Tabelle wurde erstellt. Es ist zu beachten, dass die ID hier nicht auf automatische Inkrementierung eingestellt werden kann und alle Tabellenstrukturen konsistent sein müssen, einschließlich Struktur, Typ, Länge und Reihenfolge der Felder. Wie erhält man also diese ID? Ich werde dies später ausführlich erklären. Nun benötigen wir eine zusammengeführte Tabelle für die Abfrage. Der Code zum Erstellen der zusammengeführten Tabelle lautet wie folgt:

TABELLE `yzm_table` erstellen (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NICHT NULL STANDARD '',
  `content` varchar(255) NICHT NULL STANDARD '',
  PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=NO INSERT_METHOD=LAST UNION=(`yzm_table1`,`yzm_table2`);

Die zusammengeführte Tabelle muss außerdem dieselbe Struktur, denselben Typ, dieselbe Länge und dieselbe Reihenfolge der Felder wie die vorherige Tabelle haben. INSERT_METHOD=NO bedeutet hier, dass Einfügevorgänge für diese Tabelle nicht zulässig sind. Wenn wir eine Abfrage durchführen müssen, können wir nur mit der Tabelle yzm_table arbeiten, was bedeutet, dass diese Tabelle nur Auswahlvorgänge ausführen kann.

Fügen Sie einige Datentests ein:

INSERT INTO `yzm_table1` VALUES ('1', 'Tabelle1-1', 'Inhalt1-1');
INSERT INTO `yzm_table1` VALUES ('2', 'Tabelle1-2', 'Inhalt1-2');
INSERT INTO `yzm_table2` VALUES ('3', 'table2-1', 'content2-1');
INSERT INTO `yzm_table2` VALUES ('4', 'table2-2', 'content2-2');
INSERT INTO `yzm_table2` VALUES ('5', 'table2-3', 'content2-3');

Dann fragen Sie die zusammengeführte Tabelle (Haupttabelle) ab.

Wählen Sie * aus `yzm_table` LIMIT 10;

Natürlich können alle Daten aller zugehörigen Untertabellen abgefragt werden, sodass alle Daten per Paginierung, Statistik usw. abgefragt werden können.

Oben sind die Einzelheiten des Beispiels für die Verwendung von MRG_MyISAM (MERGE) zur Implementierung von Abfragen nach Sharding in MySQL aufgeführt. Weitere Informationen zu Abfragen nach Sharding in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Einführung in die Wissenspunkte MySql-Tabelle, Datenbank, Sharding und Partitionierung
  • MySQL-Datenbankoptimierung: Detaillierte Erläuterung der Sharding-Operationen für Tabellen und Datenbanken
  • Spezifische Implementierungsmethoden für MySQL-Tabellen-Sharding und -Partitionierung
  • Zusammenfassung zum Sharding von MySQL-Datenbanken und -Tabellen
  • Erklärung der horizontalen und vertikalen Tabellenpartitionierung von MySQL
  • Anwendungsszenarien und Entwurfsmethoden für MySQL-Tabellen- und Datenbank-Sharding
  • MySQL-Datenbanktabelle und Datenbankpartitionierungsstrategie
  • Detaillierte Erläuterung des Implementierungsprozesses der Dual-Master-Synchronisierung von Teiltabellen in MySQL 5.7
  • MyBatis implementiert Mysql-Datenbank-Unterbibliotheks- und Untertabellenoperationen und -zusammenfassungen (empfohlen)
  • Was ist Tabellenpartitionierung und -partitionierung?MySql-Datenbankpartitionierung und Tabellenpartitionierungsmethode
  • Zusammenfassung der Datenaufteilung in MySQL-Datenbanken: Unterbibliothek und Untertabelle
  • Lösung für das Problem der Selbstinkrement-ID in der MySQL-Tabelle

<<:  Installieren des Ping-Tools in einem von Docker erstellten Container

>>:  Detaillierte Erläuterung zur Verwendung der WeChat-Miniprogrammkarte

Artikel empfehlen

So verwenden Sie die asynchrone Anforderungs-API von Axios in Vue

Inhaltsverzeichnis Einrichten einer einfachen HTT...

Realisieren Sie einen super coolen Wasserlichteffekt auf Leinwandbasis

In diesem Artikelbeispiel erfahren Sie den spezif...

Ausführliche Erklärung des Sperrmechanismus in MySQL

Vorwort Um die Konsistenz und Integrität der Date...

So stellen Sie die MySQL5.7-Kodierung auf utf8mb4 ein

Ich bin vor kurzem auf ein Problem gestoßen. Die ...

Beispiel für die Methode „Mysql implementiert Nullwerte zuerst/letzten“

Vorwort Wir wissen bereits, dass MySQL den SQL-Be...

Konfigurationslösung für die MySQL Dual-Master-Architektur (Master-Master)

In Unternehmen hat die hohe Verfügbarkeit von Dat...

3 Möglichkeiten zum Erstellen von JavaScript-Objekten

Inhaltsverzeichnis 1. Objektliterale 2. Das neue ...

Einführung in die Installation und Konfiguration von JDK unter CentOS-Systemen

Inhaltsverzeichnis Vorwort Überprüfen und deinsta...