Detaillierte Erläuterung der MERGE-Speicher-Engine von MySQL

Detaillierte Erläuterung der MERGE-Speicher-Engine von MySQL

Die MERGE-Speicher-Engine behandelt eine Gruppe von MyISAM-Tabellen als logische Einheit, sodass wir sie gleichzeitig abfragen können. Jedes Mitglied der MyISAM-Datentabelle, das eine MERGE-Datentabellenstruktur bildet, muss genau dieselbe Tabellenstruktur haben. Die Spalten jeder Mitgliedstabelle müssen mit demselben Namen und Typ in derselben Reihenfolge definiert werden, und die Indizes müssen ebenfalls in derselben Reihenfolge und auf dieselbe Weise definiert werden. Angenommen, Sie haben mehrere Protokolldatentabellen, von denen jede Protokolleinträge für jedes Jahr der letzten Jahre enthält. Ihre Definitionen lauten wie folgt, wobei YY das Jahr darstellt.

CREATE TABLE log_YY ( 
  dt DATETIME NICHT NULL, 
  info VARCHAR(100) NICHT NULL, 
  INDEX (dt) 
)ENGINE = MyISAM;

Angenommen, der aktuelle Satz von Protokolldatentabellen umfasst log_2004, log_2005, log_2006 und log_2007. Sie können eine MERGE-Datentabelle wie unten gezeigt erstellen, um sie zu einer logischen Einheit zu gruppieren:

Tabelle erstellen log_merge ( 
  dt DATETIME NICHT NULL, 
  info VARCHAR(100) NICHT NULL, 
  INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

Der Wert der ENGINE-Option muss MERGE sein, und die Option UNION listet die zugehörigen Tabellen auf, die in diese MERGE-Tabelle aufgenommen werden. Sobald dieser MERGE erstellt ist, können Sie ihn wie jede andere Datentabelle abfragen, mit der Ausnahme, dass jede Abfrage gleichzeitig auf alle darin enthaltenen Mitgliedsdatentabellen angewendet wird. Mithilfe der folgenden Abfrage können wir die Gesamtzahl der Datenzeilen in den obigen Protokolldatentabellen ermitteln:

Wählen Sie COUNT(*) aus log_merge aus.

Um zu ermitteln, wie viele Protokolleinträge es in jedem dieser Jahre gibt, wird folgende Abfrage verwendet:

SELECT YEAR(dt) AS y, COUNT(*) AS Einträge FROM log_merge GROUP BY y;

MERGE-Tabellen ermöglichen nicht nur das gleichzeitige Verweisen auf mehrere Tabellen, ohne dass mehrere Abfragen ausgeführt werden müssen, sondern bieten auch die folgenden Vorteile.

1) Mit der MERGE-Tabelle kann eine logische Einheit erstellt werden, deren Größe die von jeder MyISAM-Tabelle zulässige maximale Länge überschreitet.

2) Die komprimierte Datentabelle ist in der MERGE-Datentabelle enthalten. Wenn beispielsweise ein bestimmtes Jahr vorbei ist, werden Sie der entsprechenden Protokolldatei wahrscheinlich keine Datensätze mehr hinzufügen. Sie können sie daher mit dem Tool myisampack komprimieren, um Platz zu sparen. Die MERGE-Tabelle funktioniert dann trotzdem wie gewohnt.

3) MERGE-Datentabellen unterstützen auch DELETE- und UPDATE-Operationen. Der INSERT-Vorgang ist umständlicher, da MySQL wissen muss, in welche Mitgliedstabelle die neue Datenzeile eingefügt werden soll. Die Definition einer MERGE-Tabelle kann eine Option INSERT_METHOD enthalten, deren mögliche Werte NO, FIRST und LAST sind, was jeweils bedeutet, dass der INSERT-Vorgang verboten ist und die neue Datenzeile in die erste oder letzte Tabelle eingefügt wird, die in der aktuellen UNION-Option aufgeführt ist. Beispielsweise behandelt die folgende Definition INSERT-Operationen an der Tabelle log_merge als INSERT-Operationen an der Tabelle log_2007 – der letzten in der Option UNION aufgeführten Tabelle:

TABELLE ERSTELLEN log_merge( 
  dt DATETIME NICHT NULL, 
  info VARCHAR(100) NICHT NULL, 
  INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST;

Erstellen Sie eine neue Mitgliedstabelle log_2009 mit derselben Tabellenstruktur und ändern Sie dann die Tabelle log_merge, um log_2009 einzuschließen: log_2009:

CREATE TABLE log_2009 LIKE log_2008; //Neue Tabelle basierend auf der alten Tabelle erstellen ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);

Das könnte Sie auch interessieren:
  • Implementieren von Einfüge- oder Aktualisierungsvorgängen in MySQL (ähnlich der Merge-Anweisung von Oracle)
  • MySQLMerge-Speicher-Engine

<<:  Analyse der prinzipiellen Implementierung aus dem Quellcode des Mini-Programm-Entwicklertools

>>:  CentOS 8-Installationsdiagramm (superdetailliertes Tutorial)

Artikel empfehlen

JavaScript-Methode zum Erkennen des Dateityps

Inhaltsverzeichnis 1. So zeigen Sie die Binärdate...

Spezifische Verwendung von Vues neuem Spielzeug VueUse

Inhaltsverzeichnis Vorwort Was ist VueUse Einfach...

So installieren Sie MySQL unter Linux (Yum und Quellcode-Kompilierung)

Es gibt zwei Möglichkeiten, MySQL unter Linux zu ...

Die Organisation W3C gibt Stilempfehlungen für HTML4

Dies ist die Stilempfehlung der W3C-Organisation f...

Vue implementiert einen Countdown zwischen angegebenen Daten

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Platzhalter (erweiterte SQL-Filterung)

Inhaltsverzeichnis Lassen Sie uns zunächst kurz P...

Docker-Bereitstellung von Kafka und Spring Kafka-Implementierung

In diesem Artikel wird hauptsächlich die Bereitst...

js, um die Produktionsmethode des Karussells zu realisieren

In diesem Artikel wird der spezifische Code für j...