Heim  >  Artikel  >  Datenbank  >  Einführung in die MERGE-Speicher-Engine in MySQL (Codebeispiel)

Einführung in die MERGE-Speicher-Engine in MySQL (Codebeispiel)

不言
不言nach vorne
2019-02-14 13:21:421854Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die MERGE-Speicher-Engine (Codebeispiele). Ich hoffe, dass er für Sie hilfreich ist.

Die MERGE-Speicher-Engine behandelt eine Reihe von MyISAM-Datentabellen als logische Einheit, sodass wir sie gleichzeitig abfragen können. Jedes Mitglied der MyISAM-Datentabelle, das eine MERGE-Datentabellenstruktur darstellt, muss genau dieselbe Tabellenstruktur haben. Die Datenspalten jeder Mitgliedsdatentabelle müssen mit demselben Namen und Typ in derselben Reihenfolge definiert werden, und die Indizes müssen in derselben Reihenfolge und auf dieselbe Weise definiert werden. Angenommen, Sie haben mehrere Protokolldatentabellen und deren Inhalt sind Protokolldatensätze für jedes Jahr der letzten Jahre. Ihre Definitionen lauten wie folgt: YY steht für das Jahr (empfohlener Kurs: MySQL-Tutorial)

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

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

CREATE TABLE log_merge ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

ENGINE-Option The Der Wert muss MERGE sein. Die Option UNION listet die zugehörigen Datentabellen auf, die in diese MERGE-Datentabelle aufgenommen werden. Nachdem diese MERGE erstellt wurde, können Sie sie wie jede andere Datentabelle abfragen, mit der Ausnahme, dass sich jede Abfrage gleichzeitig auf jede Mitgliedsdatentabelle auswirkt, aus der sie besteht. Die folgende Abfrage ermöglicht es uns, die Gesamtzahl der Datenzeilen in den obigen Protokolldatentabellen zu ermitteln:

SELECT COUNT(*)FROM log_merge;

Die folgende Abfrage wird verwendet, um zu ermitteln, wie viele Protokolleinträge es in jedem der letzten Jahre gibt:

SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;

Die MERGE-Datentabelle erleichtert nicht nur die gleichzeitige Referenzierung mehrerer Datentabellen ohne mehrere Abfragen, sondern bietet auch die folgenden Annehmlichkeiten.

 1) Die MERGE-Datentabelle kann verwendet werden, um eine logische Einheit zu erstellen, deren Größe die von jeder MyISAM-Datentabelle maximal zulässige Länge überschreitet.
 2) Die komprimierte Datentabelle ist in der MERGE-Datentabelle enthalten. Beispielsweise sollten Sie nach Ablauf eines bestimmten Jahres keine Datensätze mehr zur entsprechenden Protokolldatei hinzufügen, sodass Sie diese mit dem Tool myisampack komprimieren können, um Platz zu sparen, und die MERGE-Datentabelle weiterhin wie gewohnt funktionieren kann
3) unterstützt die MERGE-Datentabelle auch DELETE- und UPDATE-Operationen. Der INSERT-Vorgang ist problematischer, da MySQL wissen muss, in welche Mitgliedstabelle die neue Datenzeile eingefügt werden soll. Die Definition der MERGE-Datentabelle kann eine INSERT_METHOD-Option enthalten. Die möglichen Werte dieser Option sind NO, FIRST und LAST. Ihre Bedeutung besteht darin, dass die INSERT-Operation verboten ist und neue Datenzeilen in die aktuelle UNION-Option eingefügt werden . die erste Datentabelle oder die letzte Datentabelle. Die folgende Definition behandelt beispielsweise eine INSERT-Operation für die Tabelle log_merge so, als wäre es eine INSERT-Operation für die Tabelle log_2007, die letzte in der UNION-Option aufgeführte Tabelle:

CREATE TABLE log_merge( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST;

Erstellen Sie eine neue Mitgliedstabelle log_2009 und Lassen Sie es die gleiche Tabellenstruktur haben und ändern Sie dann die log_merge-Datentabelle so, dass sie log_2009: log_2009:

CREATE TABLE log_2009 LIKE log_2008; //根据旧表创建新表
ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);
enthält

Das obige ist der detaillierte Inhalt vonEinführung in die MERGE-Speicher-Engine in MySQL (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen